sendmessage-ko_template_ko
This commit is contained in:
parent
93595e7fc2
commit
36257ebba7
@ -404,29 +404,84 @@ class ChatElement extends HTMLElement {
|
||||
|
||||
try {
|
||||
const myAddresses = await this.getMemberFromDevice();
|
||||
console.log('👤 Adresses de l\'expéditeur:', myAddresses);
|
||||
if (!myAddresses) {
|
||||
throw new Error('No paired member found');
|
||||
}
|
||||
|
||||
// Vérifier si un processus de conversation existe déjà
|
||||
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId!);
|
||||
console.log('🔍 Processus existant:', existingProcess);
|
||||
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId);
|
||||
|
||||
// Ajoutons des logs pour voir la structure exacte
|
||||
console.log('📝 Process existant:', {
|
||||
fullProcess: existingProcess,
|
||||
messageStructure: existingProcess?.messages?.object?.content?.[0]
|
||||
});
|
||||
|
||||
const messageContent = {
|
||||
text: messageText,
|
||||
timestamp: Date.now(),
|
||||
sender: myAddresses[0],
|
||||
type: 'text',
|
||||
state: 'initial',
|
||||
object: {
|
||||
content: messageText,
|
||||
metadata: {
|
||||
created_at: Date.now(),
|
||||
last_updated: Date.now()
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
console.log('📝 Nouveau message:', messageContent);
|
||||
|
||||
if (existingProcess) {
|
||||
console.log('📝 Mise à jour du processus existant');
|
||||
await this.updateProcessWithNewMessage(existingProcess.process_id, messageText);
|
||||
console.log('✏️ Mise à jour du processus:', {
|
||||
processId: existingProcess.process_id,
|
||||
currentMessages: existingProcess.messages.object.content,
|
||||
newMessage: messageContent
|
||||
});
|
||||
// Mettre à jour le processus existant avec le nouveau message
|
||||
existingProcess.messages.object.content.push(messageContent);
|
||||
existingProcess.messages.object.metadata.last_updated = Date.now();
|
||||
|
||||
await this.updateProcessWithNewMessage(existingProcess.process_id, messageContent);
|
||||
console.log('✅ Message ajouté au processus existant:', existingProcess.process_id);
|
||||
} else {
|
||||
console.log('🆕 Création d\'un nouveau processus');
|
||||
// Créer un nouveau processus de message
|
||||
const messagingTemplate = {
|
||||
process_id: crypto.randomUUID(),
|
||||
parent_id: null,
|
||||
description: 'messaging',
|
||||
messages: {
|
||||
state: 'initial',
|
||||
object: {
|
||||
type: 'message_list',
|
||||
content: [messageContent],
|
||||
content_type: {
|
||||
allowed: ['text', 'file'],
|
||||
default: 'text'
|
||||
},
|
||||
metadata: {
|
||||
created_at: Date.now(),
|
||||
last_updated: Date.now()
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const result = await this.createMessagingProcess(
|
||||
[{ sp_addresses: [this.selectedMemberId] }],
|
||||
'relay_address',
|
||||
1
|
||||
);
|
||||
console.log('✅ Nouveau processus créé:', result);
|
||||
await this.saveConversationProcessRef(this.selectedMemberId!, (result as any).id);
|
||||
|
||||
await this.saveConversationProcessRef(this.selectedMemberId, messagingTemplate.process_id);
|
||||
console.log('✅ Nouveau processus de message créé:', messagingTemplate.process_id);
|
||||
}
|
||||
|
||||
console.log('✅ Message envoyé avec succès');
|
||||
messageInput.value = '';
|
||||
|
||||
this.loadMemberChat(this.selectedMemberId);
|
||||
|
||||
} catch (error) {
|
||||
console.error('❌ Erreur lors de l\'envoi du message:', error);
|
||||
}
|
||||
@ -446,8 +501,9 @@ class ChatElement extends HTMLElement {
|
||||
}
|
||||
|
||||
this.selectedMemberId = String(memberId);
|
||||
const memberMessages = this.messagesMock.find(m => String(m.memberId) === String(memberId));
|
||||
|
||||
|
||||
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId);
|
||||
|
||||
const chatHeader = this.shadowRoot?.querySelector('#chat-header');
|
||||
const messagesContainer = this.shadowRoot?.querySelector('#messages');
|
||||
|
||||
@ -458,60 +514,27 @@ class ChatElement extends HTMLElement {
|
||||
chatHeader.textContent = `Chat with ${emojis}`;
|
||||
messagesContainer.innerHTML = '';
|
||||
|
||||
if (memberMessages) {
|
||||
for (const message of memberMessages.messages) {
|
||||
if (existingProcess?.messages?.object?.content) {
|
||||
for (const message of existingProcess.messages.object.content) {
|
||||
const messageElement = document.createElement('div');
|
||||
messageElement.className = 'message-container';
|
||||
|
||||
if (message.sender === myAddresses[0]) {
|
||||
messageElement.style.justifyContent = 'flex-end';
|
||||
} else {
|
||||
messageElement.style.justifyContent = 'flex-start';
|
||||
}
|
||||
messageElement.style.justifyContent = message.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
|
||||
|
||||
const messageContent = document.createElement('div');
|
||||
messageContent.className = message.class || 'message';
|
||||
|
||||
if (message.type === 'file') {
|
||||
messageContent.innerHTML = `
|
||||
<div class="message-content">
|
||||
<strong>${await addressToEmoji(message.sender)}</strong>:
|
||||
<span class="file-message" style="cursor: pointer; color: #0066cc; text-decoration: underline;">
|
||||
📎 ${message.fileName}
|
||||
</span>
|
||||
</div>
|
||||
<div class="message-time">${message.time}</div>
|
||||
`;
|
||||
|
||||
const fileSpan = messageContent.querySelector('.file-message');
|
||||
fileSpan?.addEventListener('click', () => {
|
||||
const fileKey = `file_${message.id}`;
|
||||
const fileData = localStorage.getItem(fileKey);
|
||||
if (fileData) {
|
||||
// Créer un lien de téléchargement
|
||||
const link = document.createElement('a');
|
||||
link.href = fileData;
|
||||
link.download = message.fileName;
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
messageContent.innerHTML = `
|
||||
<div class="message-content">
|
||||
<strong>${await addressToEmoji(message.sender)}</strong>: ${message.text}
|
||||
</div>
|
||||
<div class="message-time">${message.time}</div>
|
||||
`;
|
||||
}
|
||||
messageContent.className = `message ${message.sender === myAddresses[0] ? 'user' : ''}`;
|
||||
messageContent.innerHTML = `
|
||||
<div class="message-content">
|
||||
<strong>${await addressToEmoji(message.sender)}</strong>: ${message.text}
|
||||
</div>
|
||||
<div class="message-time">${new Date(message.timestamp).toLocaleString('fr-FR')}</div>
|
||||
`;
|
||||
|
||||
messageElement.appendChild(messageContent);
|
||||
messagesContainer.appendChild(messageElement);
|
||||
}
|
||||
|
||||
this.scrollToBottom(messagesContainer);
|
||||
}
|
||||
|
||||
this.scrollToBottom(messagesContainer);
|
||||
}
|
||||
|
||||
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
|
||||
@ -1103,17 +1126,14 @@ class ChatElement extends HTMLElement {
|
||||
}
|
||||
}
|
||||
|
||||
private async updateProcessWithNewMessage(processId: string, messageText: string) {
|
||||
private async updateProcessWithNewMessage(processId: string, messageContent: any) {
|
||||
const db = await Database.getInstance();
|
||||
try {
|
||||
const process = await db.getObject('processes', processId);
|
||||
if (process) {
|
||||
const myAddresses = await this.getMemberFromDevice();
|
||||
process.messages.object.content.push({
|
||||
text: messageText,
|
||||
timestamp: Date.now(),
|
||||
sender: myAddresses?.[0]
|
||||
});
|
||||
process.messages.object.content.push(messageContent);
|
||||
process.messages.object.metadata.last_updated = Date.now();
|
||||
|
||||
await db.addObject({
|
||||
storeName: 'processes',
|
||||
key: processId,
|
||||
|
Loading…
x
Reference in New Issue
Block a user