From ea88e55cf57cdc599c35244ada27c4fa022dd07a Mon Sep 17 00:00:00 2001 From: Pascal Date: Wed, 8 Jan 2025 15:58:10 +0100 Subject: [PATCH] init_member_role_message --- src/pages/chat/chat.ts | 71 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 11c5320..71446dd 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -68,6 +68,9 @@ class ChatElement extends HTMLElement { this.dom = getCorrectDOM('signature-element'); this.processId = this.getAttribute('process-id'); + // Initialiser sdkClient + this.initSDKClient(); + // Récupérer le processId depuis l'attribut du composant console.log('🔍 Constructor - Process ID from element:', this.processId); @@ -239,6 +242,7 @@ class ChatElement extends HTMLElement { const everyOneElse = otherMembers; const messagingTemplate = { process_id: crypto.randomUUID(), + parent_id: null, description: 'messaging', messages: { state: 'initial', @@ -430,7 +434,6 @@ class ChatElement extends HTMLElement { memberList = document.createElement('ul'); memberList.className = 'member-list'; - // Récupérer les membres avec leurs sp_addresses if (roleData.members) { for (const member of roleData.members) { const memberItem = document.createElement('li'); @@ -439,7 +442,6 @@ class ChatElement extends HTMLElement { const memberContainer = document.createElement('div'); memberContainer.className = 'member-container'; - const emojiSpan = document.createElement('span'); emojiSpan.className = 'member-emoji'; if (member.sp_addresses?.[0]) { @@ -450,9 +452,43 @@ class ChatElement extends HTMLElement { memberContainer.appendChild(emojiSpan); memberItem.appendChild(memberContainer); - memberItem.onclick = (event) => { + memberItem.onclick = async (event) => { event.stopPropagation(); - this.loadMemberChat(member.sp_addresses[0]); + try { + // S'assurer que le SDK est initialisé + if (!this.sdkClient) { + 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 + }); + + const result = await this.createMessagingProcess( + [member], + 'relay_address', + 1 + ); + + console.log('Messaging process created:', { + processId, + template: result, + member: member + }); + + this.loadMemberChat(member.sp_addresses[0]); + } catch (error) { + console.error('Error creating messaging process:', error); + } }; memberList.appendChild(memberItem); @@ -762,6 +798,33 @@ class ChatElement extends HTMLElement { console.log('🎯 New messaging process added successfully'); } + + private async initSDKClient() { + try { + // Récupérer l'instance du SDK depuis window ou l'initialiser + this.sdkClient = (window as any).sdk || await this.createSDKClient(); + if (!this.sdkClient) { + throw new Error('Failed to initialize SDK client'); + } + } catch (error) { + console.error('Error initializing SDK client:', error); + } + } + + private async createSDKClient() { + // Implémentez ici la logique de création du SDK client + // Ceci est un exemple, ajustez selon votre implémentation réelle + return new Promise((resolve) => { + // Logique d'initialisation du SDK + resolve({ + is_paired: () => true, // Valeur par défaut pour le test + create_new_process: async (template: string, parentId: string | null, relayAddress: string, feeRate: number) => { + // Implémentation de create_new_process + return { success: true }; + } + }); + }); + } } customElements.define('chat-element', ChatElement);