diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 680eaea..1d2e639 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -96,7 +96,7 @@ class ChatElement extends HTMLElement { window.toggleUserList = this.toggleUserList.bind(this); window.loadMemberChat = async (memberId: string | number) => { if (typeof memberId === 'string') { - return await this.loadMemberChat(memberId); + return await this.loadMemberChat([memberId]); } else { console.error('Invalid memberId type. Expected string, got number.'); } @@ -188,7 +188,7 @@ class ChatElement extends HTMLElement { notifElement.className = 'notification-item'; notifElement.textContent = `${notif.text} at ${notif.time}`; notifElement.onclick = async () => { - await this.loadMemberChat(notif.memberId); + await this.loadMemberChat([notif.memberId]); await this.removeNotification(index); }; this.notificationBoard?.appendChild(notifElement); @@ -243,7 +243,7 @@ class ChatElement extends HTMLElement { private async sendMessage() { const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement; - if (!messageInput || !this.selectedMemberId) { + if (!messageInput || !this.selectedMember) { console.error('❌ Missing message input or selected member'); return; } @@ -265,9 +265,6 @@ class ChatElement extends HTMLElement { if (!myAddresses) throw new Error('No paired member found'); const timestamp = Date.now(); - const processId = this.getAttribute('process-id'); - const uniqueKey = `${processId}${timestamp}`; - // Ouvrir IndexedDB const dbRequest = indexedDB.open('4nk'); @@ -281,23 +278,20 @@ class ChatElement extends HTMLElement { const store = transaction.objectStore('diffs'); try { - // Premier message - const messageTemplate = { - value_commitment: uniqueKey, - messaging_id: processId, - description: 'message_content', + const message = { + state: this.messageState, + type: 'text', + content: messageText, metadata: { - text: messageText, - timestamp: timestamp, - sender: myAddresses[0], - recipient: this.selectedMemberId, - messageState: this.messageState, - roleName: this.selectedRole + createdAt: timestamp, + lastModified: timestamp, + sender: myAddresses, + recipient: this.selectedMember, } }; await new Promise((resolve, reject) => { - const request = store.add(messageTemplate); + const request = store.add(message); request.onsuccess = () => { console.log('✅ Message saved'); messageInput.value = ''; @@ -306,34 +300,6 @@ class ChatElement extends HTMLElement { request.onerror = () => reject(request.error); }); - // Réponse automatique - const autoReplyTemplate = { - value_commitment: `${processId}${timestamp + 1000}`, - messaging_id: processId, - description: 'message_content', - metadata: { - text: "Je suis un message automatique de réponse", - timestamp: timestamp + 1000, - sender: this.selectedMemberId, - recipient: myAddresses[0], - messageState: this.messageState, - roleName: this.selectedRole - } - }; - - await new Promise((resolve, reject) => { - const request = store.add(autoReplyTemplate); - request.onsuccess = () => { - console.log('✅ Auto reply saved'); - // Ajouter la notification pour la réponse automatique - if (myAddresses[0]) { - this.addNotification(myAddresses[0], autoReplyTemplate); - } - resolve(); - }; - request.onerror = () => reject(request.error); - }); - // Attendre la fin de la transaction await new Promise((resolve, reject) => { transaction.oncomplete = () => { @@ -344,8 +310,8 @@ class ChatElement extends HTMLElement { }); // Recharger les messages - if (this.selectedMemberId) { - await this.loadMemberChat(this.selectedMemberId); + if (this.selectedMember) { + await this.loadMemberChat(this.selectedMember); } } catch (error) { @@ -929,8 +895,8 @@ class ChatElement extends HTMLElement { console.error('❌ No process ID found in element attributes'); } // Si un membre est sélectionné par défaut, charger ses messages - if (this.selectedMemberId) { - await this.loadMemberChat(this.selectedMemberId); + if (this.selectedMember) { + await this.loadMemberChat(this.selectedMember); } }