From f5fd7a8a34e775665fdf7edb97b3ab4a3dde9b8a Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 22 Jan 2025 14:05:56 +0100 Subject: [PATCH] Various minor fixes --- src/pages/chat/chat.ts | 21 +++----- src/services/service.ts | 109 ++++++++++++++++++++-------------------- 2 files changed, 63 insertions(+), 67 deletions(-) diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 8c93a43..819f2e5 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -36,7 +36,7 @@ class ChatElement extends HTMLElement { private processId: string | null = null; private processRoles: any | null = null; - private selectedMember: string[] = []; + private selectedMember: string[] | null = []; private notifications: LocalNotification[] = []; private notificationBadge = document.querySelector('.notification-badge'); private notificationBoard = document.getElementById('notification-board'); @@ -53,7 +53,6 @@ class ChatElement extends HTMLElement { constructor() { super(); this.attachShadow({ mode: 'open' }); - this.processId = this.getAttribute('process-id'); this.shadowRoot!.innerHTML = ` @@ -377,7 +376,7 @@ class ChatElement extends HTMLElement { const memberList = document.createElement('div'); memberList.className = 'member-list active'; - for (const memberAddress of members) { + for (const [processId, member] of Object.entries(members)) { const memberItem = document.createElement('li'); memberItem.className = 'member-item'; @@ -387,7 +386,7 @@ class ChatElement extends HTMLElement { const emojiSpan = document.createElement('span'); emojiSpan.className = 'member-emoji'; - const emojis = await addressToEmoji(memberAddress); + const emojis = await addressToEmoji(processId); emojiSpan.textContent = `Member : ${emojis}`; memberContainer.appendChild(emojiSpan); @@ -396,7 +395,7 @@ class ChatElement extends HTMLElement { memberItem.addEventListener('click', async () => { try { - await this.loadMemberChat([memberAddress]); + await this.loadMemberChat(member.sp_addresses); } catch (error) { console.error('Error loading member chat:', error); } @@ -624,12 +623,8 @@ class ChatElement extends HTMLElement { memberItem.onclick = async (event) => { event.stopPropagation(); - // Stocker le rôle sélectionné - this.selectedRole = roleName; - console.log('🎭 Selected role:', this.selectedRole); - - try { - await this.loadMemberChat([member.sp_addresses]); + try { + await this.loadMemberChat(member.sp_addresses); } catch (error) { console.error('❌ Error handling member click:', error); } @@ -826,9 +821,9 @@ class ChatElement extends HTMLElement { members: Array.from(uniqueMembers.values()) }; - roleContainer.addEventListener('click', (event) => { + roleContainer.addEventListener('click', async (event) => { event.stopPropagation(); - this.toggleMembers(filteredRoleData, roleItem); + await this.toggleMembers(filteredRoleData, roleItem); }); roleContainer.appendChild(roleNameSpan); diff --git a/src/services/service.ts b/src/services/service.ts index bb8e12b..e470d8c 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -30,7 +30,7 @@ export default class Services { private database: any; private routingInstance!: ModalService; private relayAddresses: { [wsurl: string]: string } = {}; - private membersList: Record = {}; + private membersList: Record = {}; // Private constructor to prevent direct instantiation from outside private constructor() {} @@ -331,65 +331,67 @@ export default class Services { public async createDmProcess( otherMember: string[], - parentProcess: string, ): Promise { - try { - console.log('🚀 Début createMessagingProcess'); - console.log('📝 Parent Process ID:', parentProcess); - console.log('👥 Other Member:', otherMember); + if (otherMember.length === 0) { + throw new Error('Can\'t open dm with empty user'); + } + try { + console.log('🚀 Début createDmProcess'); + console.log('👥 Other Member:', otherMember); - if (!this.isPaired()) { - throw new Error('Device not paired'); - } + if (!this.isPaired()) { + throw new Error('Device not paired'); + } - const myAddresses = await this.getMemberFromDevice(); - console.log('🔑 Mes adresses:', myAddresses); + const myAddresses = await this.getMemberFromDevice(); + console.log('🔑 Mes adresses:', myAddresses); - if (!myAddresses) { - throw new Error('No paired member found'); - } + if (!myAddresses) { + throw new Error('No paired member found'); + } - const messagingTemplate = { - parent_id: parentProcess, - message: '', - roles: { - dm: { - members: [ - { sp_addresses: myAddresses }, - { sp_addresses: otherMember } - ], - validation_rules: [ - { - quorum: 0.01, - fields: ['message'], - min_sig_member: 0.01, - }, - ], - storages: [storageUrl] - } - } - }; + const dmTemplate = { + description: 'dm', + message: '', + roles: { + dm: { + members: [ + { sp_addresses: myAddresses }, + { sp_addresses: otherMember } + ], + validation_rules: [ + { + quorum: 0.01, + fields: ['message', 'description', 'roles'], + min_sig_member: 0.01, + }, + ], + storages: [storageUrl] + } + } + }; - console.log('📋 Template final:', JSON.stringify(messagingTemplate, null, 2)); - console.log('👥 Création du process message comme enfant de:', parentProcess); + console.log('📋 Template final:', JSON.stringify(dmTemplate, null, 2)); - const relayAddress = this.getAllRelays()[0]['spAddress']; - const feeRate = 1; - const initState = JSON.stringify(messagingTemplate); + const relayAddress = this.getAllRelays()[0]['spAddress']; + const feeRate = 1; + const initState = JSON.stringify(dmTemplate); - const result = this.sdkClient.create_new_process( - JSON.stringify(messagingTemplate), - null, - relayAddress, - feeRate - ); - // console.log('✅ Process message créé:', result); + await this.checkConnections ([{ sp_addresses: otherMember}]); - return result; - } catch (e) { - console.error('❌ Erreur:', e); - throw e; - } + const result = this.sdkClient.create_new_process( + initState, + null, + relayAddress, + feeRate + ); + + return result; + + } catch (e) { + console.error('❌ Erreur:', e); + throw e; + } } // Create prd update for current process and update @@ -1042,9 +1044,8 @@ export default class Services { * Retourne la liste de tous les membres * @returns Un tableau contenant tous les membres */ - public getAllMembers(): Process[] { - console.log('🔍 Liste complète des membres:', Object.values(this.membersList)); - return Object.values(this.membersList); + public getAllMembers(): Record { + return this.membersList; }