send_message_with_db_ok

This commit is contained in:
Pascal 2025-01-14 12:10:37 +01:00
parent ffd878d2a9
commit 303b29f3f3

View File

@ -467,47 +467,98 @@ class ChatElement extends HTMLElement {
// Load the list of members // Load the list of members
private async loadMemberChat(memberId: string | number) { private async loadMemberChat(memberId: string) {
const myAddresses = await this.getMemberFromDevice(); try {
if (!myAddresses) { const myAddresses = await this.getMemberFromDevice();
console.error('No paired member found'); if (!myAddresses) {
return; console.error('No paired member found');
} return;
this.selectedMemberId = String(memberId);
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId);
const chatHeader = this.shadowRoot?.querySelector('#chat-header');
const messagesContainer = this.shadowRoot?.querySelector('#messages');
if (!chatHeader || !messagesContainer) return;
const memberAddress = String(memberId);
const emojis = await addressToEmoji(memberAddress);
chatHeader.textContent = `Chat with ${emojis}`;
messagesContainer.innerHTML = '';
if (existingProcess?.messages?.object?.content) {
for (const message of existingProcess.messages.object.content) {
const messageElement = document.createElement('div');
messageElement.className = 'message-container';
messageElement.style.justifyContent = message.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
const messageContent = document.createElement('div');
messageContent.className = `message ${message.sender === myAddresses[0] ? 'user' : ''}`;
messageContent.innerHTML = `
<div class="message-content">
<strong>${await addressToEmoji(message.sender)}</strong>: ${message.text}
</div>
<div class="message-time">${new Date(message.timestamp).toLocaleString('fr-FR')}</div>
`;
messageElement.appendChild(messageContent);
messagesContainer.appendChild(messageElement);
} }
this.selectedMemberId = String(memberId);
this.scrollToBottom(messagesContainer); const chatHeader = this.shadowRoot?.querySelector('#chat-header');
const messagesContainer = this.shadowRoot?.querySelector('#messages');
if (!chatHeader || !messagesContainer) return;
const memberAddress = String(memberId);
const emojis = await addressToEmoji(memberAddress);
chatHeader.textContent = `Chat with ${emojis}`;
messagesContainer.innerHTML = '';
// Ouvrir IndexedDB
const dbRequest = indexedDB.open('4nk');
dbRequest.onerror = () => {
console.error("Database error:", dbRequest.error);
};
dbRequest.onsuccess = (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;
// Vérifier si c'est un message valide avec le bon role et les bons participants
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 {
// Trier les messages par timestamp
messages.sort((a, b) => a.metadata.timestamp - b.metadata.timestamp);
// Afficher les messages
for (const message of messages) {
const messageElement = document.createElement('div');
messageElement.className = 'message-container';
messageElement.style.justifyContent =
message.metadata.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
const messageContent = document.createElement('div');
messageContent.className = `message ${message.metadata.sender === myAddresses[0] ? 'user' : ''}`;
const senderEmoji = await addressToEmoji(message.metadata.sender);
messageContent.innerHTML = `
<div class="message-content">
<strong>${senderEmoji}</strong>: ${message.metadata.text}
</div>
<div class="message-time">
${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
</div>
`;
messageElement.appendChild(messageContent);
messagesContainer.appendChild(messageElement);
}
// Scroll vers le bas
this.scrollToBottom(messagesContainer);
}
};
cursorRequest.onerror = () => {
console.error("Error loading messages:", cursorRequest.error);
};
};
} catch (error) {
console.error('Error loading chat:', error);
} }
} }