sendmessage-ko_template_ko
This commit is contained in:
parent
93595e7fc2
commit
36257ebba7
@ -404,29 +404,84 @@ class ChatElement extends HTMLElement {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const myAddresses = await this.getMemberFromDevice();
|
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);
|
||||||
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId!);
|
|
||||||
console.log('🔍 Processus existant:', existingProcess);
|
// 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) {
|
if (existingProcess) {
|
||||||
console.log('📝 Mise à jour du processus existant');
|
console.log('✏️ Mise à jour du processus:', {
|
||||||
await this.updateProcessWithNewMessage(existingProcess.process_id, messageText);
|
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 {
|
} 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(
|
const result = await this.createMessagingProcess(
|
||||||
[{ sp_addresses: [this.selectedMemberId] }],
|
[{ sp_addresses: [this.selectedMemberId] }],
|
||||||
'relay_address',
|
'relay_address',
|
||||||
1
|
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 = '';
|
messageInput.value = '';
|
||||||
|
|
||||||
|
this.loadMemberChat(this.selectedMemberId);
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('❌ Erreur lors de l\'envoi du message:', error);
|
console.error('❌ Erreur lors de l\'envoi du message:', error);
|
||||||
}
|
}
|
||||||
@ -446,7 +501,8 @@ class ChatElement extends HTMLElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.selectedMemberId = String(memberId);
|
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 chatHeader = this.shadowRoot?.querySelector('#chat-header');
|
||||||
const messagesContainer = this.shadowRoot?.querySelector('#messages');
|
const messagesContainer = this.shadowRoot?.querySelector('#messages');
|
||||||
@ -458,60 +514,27 @@ class ChatElement extends HTMLElement {
|
|||||||
chatHeader.textContent = `Chat with ${emojis}`;
|
chatHeader.textContent = `Chat with ${emojis}`;
|
||||||
messagesContainer.innerHTML = '';
|
messagesContainer.innerHTML = '';
|
||||||
|
|
||||||
if (memberMessages) {
|
if (existingProcess?.messages?.object?.content) {
|
||||||
for (const message of memberMessages.messages) {
|
for (const message of existingProcess.messages.object.content) {
|
||||||
const messageElement = document.createElement('div');
|
const messageElement = document.createElement('div');
|
||||||
messageElement.className = 'message-container';
|
messageElement.className = 'message-container';
|
||||||
|
messageElement.style.justifyContent = message.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
|
||||||
if (message.sender === myAddresses[0]) {
|
|
||||||
messageElement.style.justifyContent = 'flex-end';
|
|
||||||
} else {
|
|
||||||
messageElement.style.justifyContent = 'flex-start';
|
|
||||||
}
|
|
||||||
|
|
||||||
const messageContent = document.createElement('div');
|
const messageContent = document.createElement('div');
|
||||||
messageContent.className = message.class || 'message';
|
messageContent.className = `message ${message.sender === myAddresses[0] ? 'user' : ''}`;
|
||||||
|
messageContent.innerHTML = `
|
||||||
if (message.type === 'file') {
|
<div class="message-content">
|
||||||
messageContent.innerHTML = `
|
<strong>${await addressToEmoji(message.sender)}</strong>: ${message.text}
|
||||||
<div class="message-content">
|
</div>
|
||||||
<strong>${await addressToEmoji(message.sender)}</strong>:
|
<div class="message-time">${new Date(message.timestamp).toLocaleString('fr-FR')}</div>
|
||||||
<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>
|
|
||||||
`;
|
|
||||||
}
|
|
||||||
|
|
||||||
messageElement.appendChild(messageContent);
|
messageElement.appendChild(messageContent);
|
||||||
messagesContainer.appendChild(messageElement);
|
messagesContainer.appendChild(messageElement);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this.scrollToBottom(messagesContainer);
|
this.scrollToBottom(messagesContainer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
|
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();
|
const db = await Database.getInstance();
|
||||||
try {
|
try {
|
||||||
const process = await db.getObject('processes', processId);
|
const process = await db.getObject('processes', processId);
|
||||||
if (process) {
|
if (process) {
|
||||||
const myAddresses = await this.getMemberFromDevice();
|
process.messages.object.content.push(messageContent);
|
||||||
process.messages.object.content.push({
|
process.messages.object.metadata.last_updated = Date.now();
|
||||||
text: messageText,
|
|
||||||
timestamp: Date.now(),
|
|
||||||
sender: myAddresses?.[0]
|
|
||||||
});
|
|
||||||
await db.addObject({
|
await db.addObject({
|
||||||
storeName: 'processes',
|
storeName: 'processes',
|
||||||
key: processId,
|
key: processId,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user