diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index 71446dd..feea6af 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -233,6 +233,7 @@ class ChatElement extends HTMLElement { throw new Error('Device not paired'); } const me = await this.getMemberFromDevice(); + console.log('My SP addresses:', me); if (!me) { throw new Error('No paired member in device'); } @@ -335,42 +336,104 @@ class ChatElement extends HTMLElement { } // Send a messsage - private sendMessage() { - const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement; - if (!messageInput || !this.selectedMemberId) return; - - const messageText = messageInput.value.trim(); - if (messageText === '') return; + private async sendMessage() { + const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement; + if (!messageInput || !this.selectedMemberId) return; + + const messageText = messageInput.value.trim(); + if (messageText === '') return; - const newMessage: Message = { - id: Date.now(), - sender: "4NK", - text: messageText, - time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }), - type: 'text' as const - }; - - messageStore.addMessage(this.selectedMemberId, newMessage); - this.messagesMock = messageStore.getMessages(); - this.loadMemberChat(this.selectedMemberId); + try { + const myAddresses = await this.getMemberFromDevice(); + if (!myAddresses) { + throw new Error('No paired member found'); + } - messageInput.value = ''; + // Récupérer le process_id du parent (conversation) + const groupItem = this.shadowRoot?.querySelector('[data-process-id]'); + const parentProcessId = groupItem?.getAttribute('data-process-id'); + + if (!parentProcessId) { + throw new Error('Parent process ID not found'); + } - setTimeout(() => { - if (this.selectedMemberId) { - const autoReply = { - id: Date.now(), - sender: "Member", - text: "OK...", - time: new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }), - type: 'text' as const + const currentTimestamp = new Date().toISOString(); + + const messageTemplate = { + process_id: parentProcessId, + parent_id: null, + description: 'message', + messages: { + state: 'initial', + object: { + type: 'text', + content: messageText, + metadata: { + created_at: currentTimestamp, + last_updated: currentTimestamp, + sender: myAddresses[0], + recipient: this.selectedMemberId + } + } + }, + roles: { + public: { + members: [ + { sp_addresses: myAddresses }, + { sp_addresses: [this.selectedMemberId] } + ], + validation_rules: [ + { + quorum: 0.0, + fields: ['description', 'messages'], + min_sig_member: 0.0, + }, + ], + storages: [storageUrl] + }, + owner: { + members: [ + { sp_addresses: myAddresses }, + { sp_addresses: [this.selectedMemberId] } + ], + validation_rules: [ + { + quorum: 1.0, + fields: ['description', 'messages'], + min_sig_member: 1.0, + }, + ], + storages: [storageUrl] + } + } }; - messageStore.addMessage(this.selectedMemberId, autoReply); - this.messagesMock = messageStore.getMessages(); + + console.log('Message template:', { + timestamp: currentTimestamp, + template: messageTemplate + }); + + const result = await this.createMessagingProcess( + [{ sp_addresses: [this.selectedMemberId] }], + 'relay_address', + 1 + ); + + + console.log('Final message process:', { + template: messageTemplate, + result: result, + timestamp: new Date().toISOString() + }); + + + messageInput.value = ''; + this.loadMemberChat(this.selectedMemberId); - this.addNotification(this.selectedMemberId, autoReply); + + } catch (error) { + console.error('Error sending message:', error); } - }, 2000); } private scrollToBottom(container: Element) {