From 32e96a572c614c8ab54adbd70e259630111a720d Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Mon, 27 Jan 2025 16:42:53 +0100 Subject: [PATCH] Add reloadMemberChat --- src/pages/chat/chat.ts | 114 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 2d40ce2..88dcd9d 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -575,6 +575,120 @@ class ChatElement extends HTMLElement { console.log("SENDER: ", message.metadata.sender); const pairingProcess = await this.getMyProcessId(); const senderEmoji = await addressToEmoji(pairingProcess); + + if (message.type === 'file') { + let fileContent = ''; + if (message.content.type.startsWith('image/')) { + fileContent = ` +
+ Image +
+ `; + } else { + const blob = this.base64ToBlob(message.content.data, message.content.type); + const url = URL.createObjectURL(blob); + fileContent = ` +
+ + 📎 ${message.content.name} + +
+ `; + } + + messageContent.innerHTML = ` +
+ ${senderEmoji}: ${fileContent} +
+
+ ${new Date(message.metadata.createdAt).toLocaleString('fr-FR')} +
+ `; + } else { + messageContent.innerHTML = ` +
+ ${senderEmoji}: ${message.content} +
+
+ ${new Date(message.metadata.createdAt).toLocaleString('fr-FR')} +
+ `; + } + + messageElement.appendChild(messageContent); + messagesContainer.appendChild(messageElement); + } + + this.scrollToBottom(messagesContainer); + } else { + console.log('No messages found'); + } + this.scrollToBottom(messagesContainer); + } catch (error) { + console.error('❌ Error in loadMemberChat:', error); + } + } + + private async reloadMemberChat(pairingProcess: string) { + try { + const service = await Services.getInstance(); + const myAddresses = await service.getMemberFromDevice(); + if (!myAddresses) { + console.error('No paired member found'); + return; + } + + + const messagesContainer = this.shadowRoot?.querySelector('#messages'); + + if (!messagesContainer) return; + + const emojis = await addressToEmoji(pairingProcess); + + messagesContainer.innerHTML = ''; + + let dmProcessId = await this.processId; + + // RĂ©cupĂ©rer les messages depuis les Ă©tats du processus + const allMessages: any[] = []; + + const dmProcess = await service.getProcess(dmProcessId); + + console.log(dmProcess); + + if (dmProcess?.states) { + for (const state of dmProcess.states) { + const pcd_commitment = state.pcd_commitment; + if (pcd_commitment) { + const message_hash = pcd_commitment.message; + if (message_hash) { + const diff = await service.getDiffByValue(message_hash); + const message = diff?.new_value; + if (message === "" || message === undefined) { + continue; + } + console.log('message', message); + allMessages.push(message); + } + } + } + } + + allMessages.sort((a, b) => a.metadata.createdAt - b.metadata.createdAt); + if (allMessages.length > 0) { + console.log('Messages found:', allMessages); + for (const message of allMessages) { + const messageElement = document.createElement('div'); + messageElement.className = 'message-container'; + + const isCurrentUser = message.metadata.sender === myAddresses[0]; + messageElement.style.justifyContent = isCurrentUser ? 'flex-end' : 'flex-start'; + + const messageContent = document.createElement('div'); + messageContent.className = `message ${isCurrentUser ? 'user' : ''}`; + + console.log("SENDER: ", message.metadata.sender); + const pairingProcess = await this.getMyProcessId(); const senderEmoji = await addressToEmoji(pairingProcess); if (message.type === 'file') {