This commit is contained in:
Pascal 2025-01-14 14:07:01 +01:00
parent 116e7d9b54
commit 1b980fd53c

View File

@ -229,27 +229,26 @@ class ChatElement extends HTMLElement {
const memberEmoji = await addressToEmoji(memberId); const memberEmoji = await addressToEmoji(memberId);
// Obtenir le processus et le rôle // Obtenir le processus et le rôle
const groupItem = this.shadowRoot?.querySelector('[data-process-id]'); const processId = this.getAttribute('process-id');
const processId = groupItem?.getAttribute('data-process-id');
const processEmoji = processId ? await addressToEmoji(processId) : '📝'; const processEmoji = processId ? await addressToEmoji(processId) : '📝';
// Trouver le rôle du membre // Trouver le rôle du membre
const member = this.allMembers.find(m => String(m.id) === memberId); const member = this.allMembers.find(m => String(m.id) === memberId);
const role = member?.roleName || 'Member'; const role = message.metadata?.roleName || 'Member';
// Déterminer le texte de la notification // Déterminer le texte de la notification
let notificationText = ''; let notificationText = '';
if (message.type === 'file') { if (message.type === 'file') {
notificationText = `${memberEmoji} (${role}) in ${processEmoji}: New file - ${message.fileName}`; notificationText = `${memberEmoji} (${role}) in ${processEmoji}: New file - ${message.fileName}`;
} else { } else {
notificationText = `${memberEmoji} (${role}) in ${processEmoji}: ${message.text}`; notificationText = `${memberEmoji} (${role}) in ${processEmoji}: ${message.metadata.text}`;
} }
// Créer la notification // Créer la notification
const notification = { const notification = {
memberId, memberId,
text: notificationText, text: notificationText,
time: message.time time: new Date(message.metadata.timestamp).toLocaleString('fr-FR')
}; };
// Ajouter la notification et mettre à jour l'interface // Ajouter la notification et mettre à jour l'interface
@ -420,27 +419,26 @@ class ChatElement extends HTMLElement {
dbRequest.onsuccess = async (event) => { dbRequest.onsuccess = async (event) => {
const db = dbRequest.result; const db = dbRequest.result;
// Utiliser une seule transaction pour les deux opérations
const transaction = db.transaction(['diffs'], 'readwrite'); const transaction = db.transaction(['diffs'], 'readwrite');
const store = transaction.objectStore('diffs'); const store = transaction.objectStore('diffs');
try { try {
// Premier message // Premier message
await new Promise<void>((resolve, reject) => { const messageTemplate = {
const messageTemplate = { value_commitment: uniqueKey,
value_commitment: uniqueKey, messaging_id: processId,
messaging_id: processId, description: 'message_content',
description: 'message_content', metadata: {
metadata: { text: messageText,
text: messageText, timestamp: timestamp,
timestamp: timestamp, sender: myAddresses[0],
sender: myAddresses[0], recipient: this.selectedMemberId,
recipient: this.selectedMemberId, messageState: this.messageState,
messageState: this.messageState, roleName: this.selectedRole
roleName: this.selectedRole }
} };
};
await new Promise<void>((resolve, reject) => {
const request = store.add(messageTemplate); const request = store.add(messageTemplate);
request.onsuccess = () => { request.onsuccess = () => {
console.log('✅ Message saved'); console.log('✅ Message saved');
@ -451,24 +449,28 @@ class ChatElement extends HTMLElement {
}); });
// Réponse automatique // Réponse automatique
await new Promise<void>((resolve, reject) => { const autoReplyTemplate = {
const autoReplyTemplate = { value_commitment: `${processId}${timestamp + 1000}`,
value_commitment: `${processId}${timestamp + 1000}`, messaging_id: processId,
messaging_id: processId, description: 'message_content',
description: 'message_content', metadata: {
metadata: { text: "Je suis un message automatique de réponse<73><65>",
text: "Je suis un message automatique de réponse", timestamp: timestamp + 1000,
timestamp: timestamp + 1000, sender: this.selectedMemberId,
sender: this.selectedMemberId, recipient: myAddresses[0],
recipient: myAddresses[0], messageState: this.messageState,
messageState: this.messageState, roleName: this.selectedRole
roleName: this.selectedRole }
} };
};
await new Promise<void>((resolve, reject) => {
const request = store.add(autoReplyTemplate); const request = store.add(autoReplyTemplate);
request.onsuccess = () => { request.onsuccess = () => {
console.log('✅ Auto reply saved'); console.log('✅ Auto reply saved');
// Ajouter la notification pour la réponse automatique
if (myAddresses[0]) {
this.addNotification(myAddresses[0], autoReplyTemplate);
}
resolve(); resolve();
}; };
request.onerror = () => reject(request.error); request.onerror = () => reject(request.error);
@ -563,7 +565,6 @@ class ChatElement extends HTMLElement {
const messageElement = document.createElement('div'); const messageElement = document.createElement('div');
messageElement.className = 'message-container'; messageElement.className = 'message-container';
// Vérifier si le message vient de l'utilisateur courant
const isCurrentUser = message.metadata.sender === myAddresses[0]; const isCurrentUser = message.metadata.sender === myAddresses[0];
messageElement.style.justifyContent = isCurrentUser ? 'flex-end' : 'flex-start'; messageElement.style.justifyContent = isCurrentUser ? 'flex-end' : 'flex-start';