message_role_ok

This commit is contained in:
Pascal 2025-01-14 11:59:15 +01:00
parent c521d34504
commit ffd878d2a9

View File

@ -62,6 +62,7 @@ class ChatElement extends HTMLElement {
roleName: 'Default Role'
}));
private messageState: number = 0;
private selectedRole: string | null = null;
constructor() {
@ -382,61 +383,81 @@ class ChatElement extends HTMLElement {
private async sendMessage() {
const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement;
if (!messageInput || !this.selectedMemberId) return;
if (!messageInput || !this.selectedMemberId) {
console.error('❌ Missing message input or selected member');
return;
}
if (!this.selectedRole) {
console.error('❌ No role selected');
return;
}
const messageText = messageInput.value.trim();
if (messageText === '') return;
if (messageText === '') {
console.error('❌ Empty message');
return;
}
try {
const myAddresses = await this.getMemberFromDevice();
if (!myAddresses) throw new Error('No paired member found');
const messageProcess = await this.getExistingMessageProcess(
this.getAttribute('process-id') || '',
[this.selectedMemberId]
);
if (!messageProcess) {
console.error('❌ Processus message non trouvé');
return;
}
console.log('📍 My addresses:', myAddresses);
console.log('👥 Using role:', this.selectedRole);
const timestamp = Date.now();
const uniqueKey = `${this.getAttribute('process-id')}${timestamp}`;
const processId = this.getAttribute('process-id');
const uniqueKey = `${processId}${timestamp}`;
const messageTemplate = {
value_commitment: uniqueKey,
messaging_id: this.getAttribute('process-id'),
description: 'message_content',
content: {
text: messageText,
timestamp: timestamp,
sender: myAddresses[0],
recipient: this.selectedMemberId,
messageState: this.messageState
},
roles: {
users: {
members: [
{ sp_addresses: myAddresses },
{ sp_addresses: [this.selectedMemberId] }
]
}
}
// Ouvrir directement IndexedDB
const dbRequest = indexedDB.open('4nk');
dbRequest.onerror = (event) => {
console.error("Database error:", dbRequest.error);
};
const db = await Database.getInstance();
await db.addObject({
storeName: 'diffs',
object: messageTemplate,
key: null
});
dbRequest.onsuccess = (event) => {
const db = dbRequest.result;
const transaction = db.transaction(['diffs'], 'readwrite');
const store = transaction.objectStore('diffs');
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
}
};
console.log('📝 Saving message template:', messageTemplate);
const request = store.add(messageTemplate);
request.onsuccess = () => {
console.log('✅ Message successfully saved to IndexedDB');
messageInput.value = '';
this.loadMemberChat(this.selectedMemberId!);
};
request.onerror = () => {
console.error('❌ Error saving message:', request.error);
};
transaction.oncomplete = () => {
console.log('✅ Transaction completed');
db.close();
};
};
messageInput.value = '';
await this.loadMemberChat(this.selectedMemberId);
} catch (error) {
console.error('❌ Erreur envoi message:', error);
console.error('❌ Error in sendMessage:', error);
}
}
@ -492,6 +513,8 @@ class ChatElement extends HTMLElement {
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
let memberList = roleElement.querySelector('.member-list');
const roleName = roleElement.querySelector('.role-name')?.textContent || '';
if (memberList) {
(memberList as HTMLElement).style.display =
(memberList as HTMLElement).style.display === 'none' ? 'block' : 'none';
@ -521,35 +544,19 @@ class ChatElement extends HTMLElement {
memberItem.onclick = async (event) => {
event.stopPropagation();
// Stocker le rôle sélectionné
this.selectedRole = roleName;
console.log('🎭 Selected role:', this.selectedRole);
try {
const parentProcessId = this.getAttribute('process-id');
console.log('🔍 Parent Process ID:', parentProcessId);
if (!parentProcessId) {
throw new Error('No parent process ID found');
}
const db = await Database.getInstance();
const processes = await db.getObject('processes', parentProcessId);
console.log('💾 Processus trouvé:', processes);
if (processes) {
console.log('✅ Processus existant trouvé, chargement de la conversation');
this.loadMemberChat(member.sp_addresses[0]);
} else {
console.log('🆕 Création d\'un nouveau processus de message');
const roleName = roleElement.querySelector('.role-name')?.textContent || 'default';
const result = await this.createMessagingProcess(
[member],
'relay_address',
1,
parentProcessId,
roleName
);
this.loadMemberChat(member.sp_addresses[0]);
}
this.loadMemberChat(member.sp_addresses[0]);
} catch (error) {
console.error('❌ Erreur lors du clic:', error);
console.error('❌ Error handling member click:', error);
}
};
@ -1118,7 +1125,7 @@ class ChatElement extends HTMLElement {
// Chercher le processus message dans les rôles
for (const role in roles) {
console.log(`🔍 Vérification du rôle: ${role}`);
console.log(` Vérification du rôle: ${role}`);
const members = roles[role].members;
if (members?.some((member: any) =>
spAddresses.includes(member.sp_addresses[0])