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