diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 0f30171..72ee178 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -113,11 +113,15 @@ class ChatElement extends HTMLElement { `; - window.toggleUserList = this.toggleUserList.bind(this); - window.loadMemberChat = this.loadMemberChat.bind(this); + window.loadMemberChat = (memberId: string | number) => { + if (typeof memberId === 'string') { + return this.loadMemberChat(memberId); + } else { + console.error('Invalid memberId type. Expected string, got number.'); + } + }; - this.notificationBadge = document.querySelector('.notification-badge'); this.notificationBoard = document.getElementById('notification-board'); this.notificationBell = document.getElementById('notification-bell'); @@ -403,24 +407,23 @@ class ChatElement extends HTMLElement { const myAddresses = await this.getMemberFromDevice(); if (!myAddresses) throw new Error('No paired member found'); - console.log('📍 My addresses:', myAddresses); - console.log('👥 Using role:', this.selectedRole); - const timestamp = Date.now(); const processId = this.getAttribute('process-id'); const uniqueKey = `${processId}${timestamp}`; - // Ouvrir directement IndexedDB + // Ouvrir IndexedDB const dbRequest = indexedDB.open('4nk'); dbRequest.onerror = (event) => { console.error("Database error:", dbRequest.error); }; - dbRequest.onsuccess = (event) => { + dbRequest.onsuccess = async (event) => { const db = dbRequest.result; - const transaction = db.transaction(['diffs'], 'readwrite'); - const store = transaction.objectStore('diffs'); + + // Premier message + const transaction1 = db.transaction(['diffs'], 'readwrite'); + const store1 = transaction1.objectStore('diffs'); const messageTemplate = { value_commitment: uniqueKey, @@ -436,24 +439,47 @@ class ChatElement extends HTMLElement { } }; - console.log('📝 Saving message template:', messageTemplate); + await new Promise((resolve, reject) => { + const request = store1.add(messageTemplate); + request.onsuccess = () => { + console.log('✅ Message saved'); + messageInput.value = ''; + resolve(); + }; + request.onerror = () => reject(request.error); + }); - const request = store.add(messageTemplate); + // Réponse automatique + const transaction2 = db.transaction(['diffs'], 'readwrite'); + const store2 = transaction2.objectStore('diffs'); - request.onsuccess = () => { - console.log('✅ Message successfully saved to IndexedDB'); - messageInput.value = ''; - this.loadMemberChat(this.selectedMemberId!); + 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 + } }; - request.onerror = () => { - console.error('❌ Error saving message:', request.error); - }; + await new Promise((resolve, reject) => { + const request = store2.add(autoReplyTemplate); + request.onsuccess = () => { + console.log('✅ Auto reply saved'); + resolve(); + }; + request.onerror = () => reject(request.error); + }); - transaction.oncomplete = () => { - console.log('✅ Transaction completed'); - db.close(); - }; + // Recharger les messages + if (this.selectedMemberId) { + await this.loadMemberChat(this.selectedMemberId); + } }; } catch (error) { @@ -522,7 +548,6 @@ class ChatElement extends HTMLElement { // Trier les messages par timestamp messages.sort((a, b) => a.metadata.timestamp - b.metadata.timestamp); - // Afficher les messages for (const message of messages) { const messageElement = document.createElement('div'); messageElement.className = 'message-container'; @@ -547,7 +572,6 @@ class ChatElement extends HTMLElement { messagesContainer.appendChild(messageElement); } - // Scroll vers le bas this.scrollToBottom(messagesContainer); } };