diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts
index 9232a9f..8044a25 100755
--- a/src/pages/chat/chat.ts
+++ b/src/pages/chat/chat.ts
@@ -388,13 +388,12 @@ class ChatElement extends HTMLElement {
messagesContainer.innerHTML = '';
// Filter processes for the children of current process
- const children = await service.getChildrenOfProcess(this.processId);
+ const children: string[] = await service.getChildrenOfProcess(this.processId);
let messagesProcess: Process | null = null;
- console.log(this.processRoles);
const processRoles = this.processRoles;
for (const child of children) {
- const roles = await this.getRoles(child);
+ const roles = await this.getRoles(JSON.parse(child));
// Check that we and the other members are in the role
if (!service.isChildRole(processRoles, roles)) {
console.error('Child process roles are not a subset of parent')
@@ -408,7 +407,7 @@ class ChatElement extends HTMLElement {
console.error('We\'re not part of child process');
continue;
}
- messagesProcess = child;
+ messagesProcess = JSON.parse(child);
}
if (messagesProcess === null) {
@@ -428,98 +427,91 @@ class ChatElement extends HTMLElement {
console.log('Found child process', messagesProcess);
}
- const dbRequest = indexedDB.open('4nk');
-
- dbRequest.onerror = () => {
- console.error("Database error:", dbRequest.error);
- };
-
- dbRequest.onsuccess = async (event) => {
- const db = dbRequest.result;
- const transaction = db.transaction(['diffs'], 'readonly');
- const store = transaction.objectStore('diffs');
- const messages: any[] = [];
-
- const cursorRequest = store.openCursor();
-
- cursorRequest.onsuccess = async (e) => {
- const cursor = (e.target as IDBRequest).result;
-
- if (cursor) {
- const record = cursor.value;
-
- if (record.description === 'message_content' &&
- record.metadata &&
- record.metadata.roleName === this.selectedRole &&
- ((record.metadata.sender === myAddresses[0] && record.metadata.recipient === memberId) ||
- (record.metadata.sender === memberId && record.metadata.recipient === myAddresses[0]))) {
-
- messages.push(record);
- }
- cursor.continue();
- } else {
- messages.sort((a, b) => a.metadata.timestamp - b.metadata.timestamp);
-
- for (const message of messages) {
- const messageElement = document.createElement('div');
- messageElement.className = 'message-container';
-
- const isCurrentUser = message.metadata.sender === myAddresses[0];
- messageElement.style.justifyContent = isCurrentUser ? 'flex-end' : 'flex-start';
-
- const messageContent = document.createElement('div');
- messageContent.className = `message ${isCurrentUser ? 'user' : ''}`;
-
- const senderEmoji = await addressToEmoji(message.metadata.sender);
-
- if (message.metadata.type === 'file') {
- let fileContent = '';
- if (message.metadata.fileType.startsWith('image/')) {
- fileContent = `
-
-

-
- `;
- } else {
- const blob = this.base64ToBlob(message.metadata.fileData, message.metadata.fileType);
- const url = URL.createObjectURL(blob);
- fileContent = `
-
- `;
- }
-
- messageContent.innerHTML = `
-
- ${senderEmoji}: ${fileContent}
-
-
- ${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
-
- `;
- } else {
- // Message texte normal
- messageContent.innerHTML = `
-
- ${senderEmoji}: ${message.metadata.text}
-
-
- ${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
-
- `;
- }
-
- messageElement.appendChild(messageContent);
- messagesContainer.appendChild(messageElement);
- }
-
- this.scrollToBottom(messagesContainer);
+ // Get the diffs from the database
+ for (const state of messagesProcess.states) {
+ const pcd_commitment = state.pcd_commitment;
+ if (pcd_commitment) {
+ const message_hash = pcd_commitment.message;
+ if (message_hash) {
+ const diff = await service.getDiffByValue(message_hash);
+ const message = diff.new_value;
+ console.log(message);
}
- };
- };
+ }
+ }
+
+ // if (record.description === 'message_content' &&
+ // record.metadata &&
+ // record.metadata.roleName === this.selectedRole &&
+ // ((record.metadata.sender === myAddresses[0] && record.metadata.recipient === memberId) ||
+ // (record.metadata.sender === memberId && record.metadata.recipient === myAddresses[0]))) {
+
+ // messages.push(record);
+ // }
+ // cursor.continue();
+ // } else {
+ // messages.sort((a, b) => a.metadata.timestamp - b.metadata.timestamp);
+
+ // for (const message of messages) {
+ // const messageElement = document.createElement('div');
+ // messageElement.className = 'message-container';
+
+ // const isCurrentUser = message.metadata.sender === myAddresses[0];
+ // messageElement.style.justifyContent = isCurrentUser ? 'flex-end' : 'flex-start';
+
+ // const messageContent = document.createElement('div');
+ // messageContent.className = `message ${isCurrentUser ? 'user' : ''}`;
+
+ // const senderEmoji = await addressToEmoji(message.metadata.sender);
+
+ // if (message.metadata.type === 'file') {
+ // let fileContent = '';
+ // if (message.metadata.fileType.startsWith('image/')) {
+ // fileContent = `
+ //
+ //

+ //
+ // `;
+ // } else {
+ // const blob = this.base64ToBlob(message.metadata.fileData, message.metadata.fileType);
+ // const url = URL.createObjectURL(blob);
+ // fileContent = `
+ //
+ // `;
+ // }
+
+ // messageContent.innerHTML = `
+ //
+ // ${senderEmoji}: ${fileContent}
+ //
+ //
+ // ${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
+ //
+ // `;
+ // } else {
+ // // Message texte normal
+ // messageContent.innerHTML = `
+ //
+ // ${senderEmoji}: ${message.metadata.text}
+ //
+ //
+ // ${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
+ //
+ // `;
+ // }
+
+ // messageElement.appendChild(messageContent);
+ // messagesContainer.appendChild(messageElement);
+ // }
+
+ // this.scrollToBottom(messagesContainer);
+ // }
+ // };
+ // };
} catch (error) {
console.error('Error loading chat:', error);
@@ -583,12 +575,6 @@ class ChatElement extends HTMLElement {
console.log('🎭 Selected role:', this.selectedRole);
try {
- // console.log('🔍 Début création process message');
- const parentProcessId = this.getAttribute('process-id');
- if (!parentProcessId) {
- throw new Error('No parent process ID found');
- }
-
await this.loadMemberChat(member.sp_addresses);
} catch (error) {
console.error('❌ Error handling member click:', error);
diff --git a/src/services/service.ts b/src/services/service.ts
index c181853..79528b0 100755
--- a/src/services/service.ts
+++ b/src/services/service.ts
@@ -715,7 +715,7 @@ export default class Services {
return true;
}
- rolesContainsUs(role: any): boolean {
+ rolesContainsUs(roles: any): boolean {
try {
this.sdkClient.roles_contains_us(JSON.stringify(roles));
} catch (e) {
@@ -726,7 +726,7 @@ export default class Services {
return true;
}
- rolesContainsMember(role: any, member: string[]): boolean {
+ rolesContainsMember(roles: any, member: string[]): boolean {
try {
this.sdkClient.roles_contains_member(JSON.stringify(roles), member);
} catch (e) {
@@ -838,7 +838,7 @@ export default class Services {
return processes;
}
- public async getChildrenOfProcess(processId: string): Promise {
+ public async getChildrenOfProcess(processId: string): Promise {
const processes = await this.getProcesses();
const res = [];
@@ -849,7 +849,7 @@ export default class Services {
const parentIdHash = pcdCommitment['parent_id'];
const diff = await this.getDiffByValue(parentIdHash);
if (diff && diff['new_value'] === processId) {
- res.push(process);
+ res.push(JSON.stringify(process));
}
} catch (e) {
continue;