Add reloadMemberChat

This commit is contained in:
NicolasCantu 2025-01-27 16:42:53 +01:00
parent a16c42acac
commit 32e96a572c

View File

@ -575,6 +575,120 @@ class ChatElement extends HTMLElement {
console.log("SENDER: ", message.metadata.sender);
const pairingProcess = await this.getMyProcessId();
const senderEmoji = await addressToEmoji(pairingProcess);
if (message.type === 'file') {
let fileContent = '';
if (message.content.type.startsWith('image/')) {
fileContent = `
<div class="file-preview">
<img src="${message.content.data}" alt="Image" style="max-width: 200px; max-height: 200px;"/>
</div>
`;
} else {
const blob = this.base64ToBlob(message.content.data, message.content.type);
const url = URL.createObjectURL(blob);
fileContent = `
<div class="file-download">
<a href="${url}" download="${message.content.name}">
📎 ${message.content.name}
</a>
</div>
`;
}
messageContent.innerHTML = `
<div class="message-content">
<strong>${senderEmoji}</strong>: ${fileContent}
</div>
<div class="message-time">
${new Date(message.metadata.createdAt).toLocaleString('fr-FR')}
</div>
`;
} else {
messageContent.innerHTML = `
<div class="message-content">
<strong>${senderEmoji}</strong>: ${message.content}
</div>
<div class="message-time">
${new Date(message.metadata.createdAt).toLocaleString('fr-FR')}
</div>
`;
}
messageElement.appendChild(messageContent);
messagesContainer.appendChild(messageElement);
}
this.scrollToBottom(messagesContainer);
} else {
console.log('No messages found');
}
this.scrollToBottom(messagesContainer);
} catch (error) {
console.error('❌ Error in loadMemberChat:', error);
}
}
private async reloadMemberChat(pairingProcess: string) {
try {
const service = await Services.getInstance();
const myAddresses = await service.getMemberFromDevice();
if (!myAddresses) {
console.error('No paired member found');
return;
}
const messagesContainer = this.shadowRoot?.querySelector('#messages');
if (!messagesContainer) return;
const emojis = await addressToEmoji(pairingProcess);
messagesContainer.innerHTML = '';
let dmProcessId = await this.processId;
// Récupérer les messages depuis les états du processus
const allMessages: any[] = [];
const dmProcess = await service.getProcess(dmProcessId);
console.log(dmProcess);
if (dmProcess?.states) {
for (const state of dmProcess.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;
if (message === "" || message === undefined) {
continue;
}
console.log('message', message);
allMessages.push(message);
}
}
}
}
allMessages.sort((a, b) => a.metadata.createdAt - b.metadata.createdAt);
if (allMessages.length > 0) {
console.log('Messages found:', allMessages);
for (const message of allMessages) {
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' : ''}`;
console.log("SENDER: ", message.metadata.sender);
const pairingProcess = await this.getMyProcessId();
const senderEmoji = await addressToEmoji(pairingProcess);
if (message.type === 'file') {