create_process_message_with_attributes_ok

This commit is contained in:
Pascal 2025-01-13 19:11:46 +01:00
parent ff911edf49
commit ffacc8a555

View File

@ -269,11 +269,11 @@ class ChatElement extends HTMLElement {
otherMembers: Member[], otherMembers: Member[],
relayAddress: string, relayAddress: string,
feeRate: number, feeRate: number,
parentProcessId: string, processId: string,
roleName: string roleName: string
): Promise<ApiReturn> { ): Promise<ApiReturn> {
console.log('🚀 Début createMessagingProcess'); console.log('🚀 Début createMessagingProcess');
console.log('📝 Parent Process ID:', parentProcessId); console.log('📝 Parent Process ID:', this.processId);
console.log('👥 Other Member:', otherMembers[0]); console.log('👥 Other Member:', otherMembers[0]);
console.log('👑 Role Name:', roleName); console.log('👑 Role Name:', roleName);
@ -288,8 +288,15 @@ class ChatElement extends HTMLElement {
throw new Error('No paired member found'); throw new Error('No paired member found');
} }
const currentProcessId = this.getAttribute('process-id');
console.log('🔍 Current Process ID from attribute:', currentProcessId);
if (!currentProcessId) {
throw new Error('No process ID found in element attributes');
}
const messagingTemplate = { const messagingTemplate = {
parent_id: parentProcessId, parent_id: currentProcessId,
description: 'messaging', description: 'messaging',
roles: { roles: {
[roleName]: { [roleName]: {
@ -314,11 +321,11 @@ class ChatElement extends HTMLElement {
try { try {
const result = await this.sdkClient.create_new_process( const result = await this.sdkClient.create_new_process(
JSON.stringify(messagingTemplate), JSON.stringify(messagingTemplate),
parentProcessId, this.processId,
relayAddress, relayAddress,
feeRate feeRate
); );
console.log('✅ Résultat création process:', result); console.log('✅ Process message créé:', result);
return result; return result;
} catch (e) { } catch (e) {
console.error('❌ Erreur création process:', e); console.error('❌ Erreur création process:', e);
@ -379,84 +386,26 @@ class ChatElement extends HTMLElement {
throw new Error('No paired member found'); throw new Error('No paired member found');
} }
// On récupère le processus existant
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId); const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId);
// Ajoutons des logs pour voir la structure exacte if (!existingProcess) {
console.log('📝 Process existant:', { console.error('❌ Aucun processus de message trouvé');
fullProcess: existingProcess, return;
messageStructure: existingProcess?.messages?.object?.content?.[0] }
});
const messageContent = { const messageContent = {
text: messageText, text: messageText,
timestamp: Date.now(), timestamp: Date.now(),
sender: myAddresses[0], sender: myAddresses[0],
type: 'text', type: 'text'
state: 'initial',
object: {
content: messageText,
metadata: {
created_at: Date.now(),
last_updated: Date.now()
}
}
}; };
console.log('📝 Nouveau message:', messageContent); // Mise à jour du processus existant avec le nouveau message
if (existingProcess) {
console.log('✏️ Mise à jour du processus:', {
processId: existingProcess.process_id,
currentMessages: existingProcess.messages.object.content,
newMessage: messageContent
});
// Mettre à jour le processus existant avec le nouveau message
existingProcess.messages.object.content.push(messageContent);
existingProcess.messages.object.metadata.last_updated = Date.now();
await this.updateProcessWithNewMessage(existingProcess.process_id, messageContent); await this.updateProcessWithNewMessage(existingProcess.process_id, messageContent);
console.log('✅ Message ajouté au processus existant:', existingProcess.process_id); console.log('✅ Message ajouté au processus existant:', existingProcess.process_id);
} else {
// Créer un nouveau processus de message
const messagingTemplate = {
process_id: crypto.randomUUID(),
parent_id: null,
description: 'messaging',
messages: {
state: 'initial',
object: {
type: 'message_list',
content: [messageContent],
content_type: {
allowed: ['text', 'file'],
default: 'text'
},
metadata: {
created_at: Date.now(),
last_updated: Date.now()
}
}
}
};
const groupItem = this.shadowRoot?.querySelector('[data-process-id]');
const parentProcessId = groupItem?.getAttribute('data-process-id') || '';
const roleName = 'default';
const result = await this.createMessagingProcess(
[{ sp_addresses: [this.selectedMemberId!] }],
'relay_address',
1,
this.processId || '',
'default'
);
await this.saveConversationProcessRef(this.selectedMemberId, messagingTemplate.process_id);
console.log('✅ Nouveau processus de message créé:', messagingTemplate.process_id);
}
messageInput.value = ''; messageInput.value = '';
this.loadMemberChat(this.selectedMemberId); this.loadMemberChat(this.selectedMemberId);
} catch (error) { } catch (error) {
@ -546,43 +495,26 @@ class ChatElement extends HTMLElement {
memberItem.onclick = async (event) => { memberItem.onclick = async (event) => {
event.stopPropagation(); event.stopPropagation();
try { try {
if (!this.sdkClient) { const existingProcess = await this.getExistingConversationProcess(member.sp_addresses[0]);
await this.initSDKClient();
}
const groupItem = roleElement.closest('[data-process-id]');
const processId = groupItem?.getAttribute('data-process-id');
if (!processId) {
throw new Error('Process ID not found');
}
console.log('Creating messaging process with:', {
processId,
member,
sdkClientInitialized: !!this.sdkClient
});
if (existingProcess) {
console.log('✅ Processus existant trouvé, chargement de la conversation');
this.loadMemberChat(member.sp_addresses[0]);
} else {
console.log('🆕 Création d\'un nouveau processus de message');
const roleName = roleElement.querySelector('.role-name')?.textContent || 'default'; const roleName = roleElement.querySelector('.role-name')?.textContent || 'default';
console.log('🎭 Role cliqué:', roleName);
const result = await this.createMessagingProcess( const result = await this.createMessagingProcess(
[member], [member],
'relay_address', 'relay_address',
1, 1,
processId, this.processId || '',
roleName roleName
); );
await this.saveConversationProcessRef(member.sp_addresses[0], (result as any).process_id);
console.log('Messaging process created:', {
processId,
template: result,
member: member
});
this.loadMemberChat(member.sp_addresses[0]); this.loadMemberChat(member.sp_addresses[0]);
}
} catch (error) { } catch (error) {
console.error('Error creating messaging process:', error); console.error('❌ Erreur:', error);
} }
}; };
@ -900,11 +832,12 @@ class ChatElement extends HTMLElement {
} }
} }
}; };
const result = await this.createMessagingProcess( const result = await this.createMessagingProcess(
[{ sp_addresses: [this.selectedMemberId!] }], [{ sp_addresses: [this.selectedMemberId!] }],
'relay_address', 'relay_address',
1 1,
JSON.stringify(messageTemplate),
'file_message'
); );
console.log('Final file message process:', { console.log('Final file message process:', {
@ -994,39 +927,42 @@ class ChatElement extends HTMLElement {
} }
private addNewMessagingProcess(processId: string, processName: string) { private addNewMessagingProcess(processId: string, processName: string) {
console.log('🎯 Adding new messaging process:', { processId, processName }); console.log('🎯 Début addNewMessagingProcess');
console.log('📝 ProcessId reçu:', processId);
// Stockage immédiat du processId
this.processId = processId;
console.log('💾 ProcessId stocké dans this.processId:', this.processId);
const groupList = this.shadowRoot?.querySelector('#group-list'); const groupList = this.shadowRoot?.querySelector('#group-list');
if (!groupList) { if (!groupList) {
console.error('Group list not found in shadow DOM'); console.error('Group list not found');
return; return;
} }
// Vérifier si le processus existe déjà // Vérification que le processId est bien stocké
console.log('🔍 Vérification this.processId après stockage:', this.processId);
const existingProcess = groupList.querySelector(`[data-process-id="${processId}"]`); const existingProcess = groupList.querySelector(`[data-process-id="${processId}"]`);
if (existingProcess) { if (existingProcess) {
console.log('Process already exists:', processId); console.log('Process already exists:', processId);
return; return;
} }
// Créer le nouveau groupe
const li = document.createElement('li'); const li = document.createElement('li');
li.className = 'group-list-item'; li.className = 'group-list-item';
li.setAttribute('data-process-id', processId); li.setAttribute('data-process-id', processId);
// Créer le conteneur flex
const container = document.createElement('div'); const container = document.createElement('div');
container.className = 'group-item-container'; container.className = 'group-item-container';
// Créer un span pour le nom du processus
const nameSpan = document.createElement('span'); const nameSpan = document.createElement('span');
nameSpan.textContent = processName; nameSpan.textContent = processName;
nameSpan.className = 'process-name'; nameSpan.className = 'process-name';
// Créer un span pour les emojis
const emojiSpan = document.createElement('span'); const emojiSpan = document.createElement('span');
emojiSpan.className = 'process-emoji'; emojiSpan.className = 'process-emoji';
// Ajouter les emojis de l'adresse
addressToEmoji(processId).then(emojis => { addressToEmoji(processId).then(emojis => {
emojiSpan.textContent = emojis; emojiSpan.textContent = emojis;
}); });
@ -1035,12 +971,10 @@ class ChatElement extends HTMLElement {
container.appendChild(emojiSpan); container.appendChild(emojiSpan);
li.appendChild(container); li.appendChild(container);
// Créer la liste des rôles
const roleList = document.createElement('ul'); const roleList = document.createElement('ul');
roleList.className = 'role-list'; roleList.className = 'role-list';
roleList.style.display = 'none'; roleList.style.display = 'none';
// Ajouter un rôle par défaut pour le messaging
const roleItem = document.createElement('li'); const roleItem = document.createElement('li');
roleItem.className = 'role-item'; roleItem.className = 'role-item';
roleItem.textContent = 'Messaging'; roleItem.textContent = 'Messaging';