message_role_ok
This commit is contained in:
parent
c521d34504
commit
ffd878d2a9
@ -62,6 +62,7 @@ class ChatElement extends HTMLElement {
|
|||||||
roleName: 'Default Role'
|
roleName: 'Default Role'
|
||||||
}));
|
}));
|
||||||
private messageState: number = 0;
|
private messageState: number = 0;
|
||||||
|
private selectedRole: string | null = null;
|
||||||
|
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -382,61 +383,81 @@ class ChatElement extends HTMLElement {
|
|||||||
|
|
||||||
private async sendMessage() {
|
private async sendMessage() {
|
||||||
const messageInput = this.shadowRoot?.querySelector('#message-input') as HTMLInputElement;
|
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();
|
const messageText = messageInput.value.trim();
|
||||||
if (messageText === '') return;
|
if (messageText === '') {
|
||||||
|
console.error('❌ Empty message');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const myAddresses = await this.getMemberFromDevice();
|
const myAddresses = await this.getMemberFromDevice();
|
||||||
if (!myAddresses) throw new Error('No paired member found');
|
if (!myAddresses) throw new Error('No paired member found');
|
||||||
|
|
||||||
|
console.log('📍 My addresses:', myAddresses);
|
||||||
const messageProcess = await this.getExistingMessageProcess(
|
console.log('👥 Using role:', this.selectedRole);
|
||||||
this.getAttribute('process-id') || '',
|
|
||||||
[this.selectedMemberId]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!messageProcess) {
|
|
||||||
console.error('❌ Processus message non trouvé');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const timestamp = Date.now();
|
const timestamp = Date.now();
|
||||||
const uniqueKey = `${this.getAttribute('process-id')}${timestamp}`;
|
const processId = this.getAttribute('process-id');
|
||||||
|
const uniqueKey = `${processId}${timestamp}`;
|
||||||
|
|
||||||
|
// Ouvrir directement IndexedDB
|
||||||
|
const dbRequest = indexedDB.open('4nk');
|
||||||
|
|
||||||
|
dbRequest.onerror = (event) => {
|
||||||
|
console.error("Database error:", dbRequest.error);
|
||||||
|
};
|
||||||
|
|
||||||
|
dbRequest.onsuccess = (event) => {
|
||||||
|
const db = dbRequest.result;
|
||||||
|
const transaction = db.transaction(['diffs'], 'readwrite');
|
||||||
|
const store = transaction.objectStore('diffs');
|
||||||
|
|
||||||
const messageTemplate = {
|
const messageTemplate = {
|
||||||
value_commitment: uniqueKey,
|
value_commitment: uniqueKey,
|
||||||
messaging_id: this.getAttribute('process-id'),
|
messaging_id: processId,
|
||||||
description: 'message_content',
|
description: 'message_content',
|
||||||
content: {
|
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
|
||||||
roles: {
|
|
||||||
users: {
|
|
||||||
members: [
|
|
||||||
{ sp_addresses: myAddresses },
|
|
||||||
{ sp_addresses: [this.selectedMemberId] }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const db = await Database.getInstance();
|
console.log('📝 Saving message template:', messageTemplate);
|
||||||
await db.addObject({
|
|
||||||
storeName: 'diffs',
|
|
||||||
object: messageTemplate,
|
|
||||||
key: null
|
|
||||||
});
|
|
||||||
|
|
||||||
|
const request = store.add(messageTemplate);
|
||||||
|
|
||||||
|
request.onsuccess = () => {
|
||||||
|
console.log('✅ Message successfully saved to IndexedDB');
|
||||||
messageInput.value = '';
|
messageInput.value = '';
|
||||||
await this.loadMemberChat(this.selectedMemberId);
|
this.loadMemberChat(this.selectedMemberId!);
|
||||||
|
};
|
||||||
|
|
||||||
|
request.onerror = () => {
|
||||||
|
console.error('❌ Error saving message:', request.error);
|
||||||
|
};
|
||||||
|
|
||||||
|
transaction.oncomplete = () => {
|
||||||
|
console.log('✅ Transaction completed');
|
||||||
|
db.close();
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
} catch (error) {
|
} 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) {
|
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
|
||||||
let memberList = roleElement.querySelector('.member-list');
|
let memberList = roleElement.querySelector('.member-list');
|
||||||
|
const roleName = roleElement.querySelector('.role-name')?.textContent || '';
|
||||||
|
|
||||||
if (memberList) {
|
if (memberList) {
|
||||||
(memberList as HTMLElement).style.display =
|
(memberList as HTMLElement).style.display =
|
||||||
(memberList as HTMLElement).style.display === 'none' ? 'block' : 'none';
|
(memberList as HTMLElement).style.display === 'none' ? 'block' : 'none';
|
||||||
@ -521,35 +544,19 @@ class ChatElement extends HTMLElement {
|
|||||||
|
|
||||||
memberItem.onclick = async (event) => {
|
memberItem.onclick = async (event) => {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
// Stocker le rôle sélectionné
|
||||||
|
this.selectedRole = roleName;
|
||||||
|
console.log('🎭 Selected role:', this.selectedRole);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const parentProcessId = this.getAttribute('process-id');
|
const parentProcessId = this.getAttribute('process-id');
|
||||||
console.log('🔍 Parent Process ID:', parentProcessId);
|
|
||||||
|
|
||||||
if (!parentProcessId) {
|
if (!parentProcessId) {
|
||||||
throw new Error('No parent process ID found');
|
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]);
|
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]);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} 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
|
// Chercher le processus message dans les rôles
|
||||||
for (const role in roles) {
|
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;
|
const members = roles[role].members;
|
||||||
if (members?.some((member: any) =>
|
if (members?.some((member: any) =>
|
||||||
spAddresses.includes(member.sp_addresses[0])
|
spAddresses.includes(member.sp_addresses[0])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user