send_message_with_db_ok
This commit is contained in:
parent
ffd878d2a9
commit
303b29f3f3
@ -467,7 +467,8 @@ 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) {
|
||||||
|
try {
|
||||||
const myAddresses = await this.getMemberFromDevice();
|
const myAddresses = await this.getMemberFromDevice();
|
||||||
if (!myAddresses) {
|
if (!myAddresses) {
|
||||||
console.error('No paired member found');
|
console.error('No paired member found');
|
||||||
@ -476,8 +477,6 @@ class ChatElement extends HTMLElement {
|
|||||||
|
|
||||||
this.selectedMemberId = String(memberId);
|
this.selectedMemberId = String(memberId);
|
||||||
|
|
||||||
const existingProcess = await this.getExistingConversationProcess(this.selectedMemberId);
|
|
||||||
|
|
||||||
const chatHeader = this.shadowRoot?.querySelector('#chat-header');
|
const chatHeader = this.shadowRoot?.querySelector('#chat-header');
|
||||||
const messagesContainer = this.shadowRoot?.querySelector('#messages');
|
const messagesContainer = this.shadowRoot?.querySelector('#messages');
|
||||||
|
|
||||||
@ -488,27 +487,79 @@ class ChatElement extends HTMLElement {
|
|||||||
chatHeader.textContent = `Chat with ${emojis}`;
|
chatHeader.textContent = `Chat with ${emojis}`;
|
||||||
messagesContainer.innerHTML = '';
|
messagesContainer.innerHTML = '';
|
||||||
|
|
||||||
if (existingProcess?.messages?.object?.content) {
|
// Ouvrir IndexedDB
|
||||||
for (const message of existingProcess.messages.object.content) {
|
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');
|
const messageElement = document.createElement('div');
|
||||||
messageElement.className = 'message-container';
|
messageElement.className = 'message-container';
|
||||||
messageElement.style.justifyContent = message.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
|
messageElement.style.justifyContent =
|
||||||
|
message.metadata.sender === myAddresses[0] ? 'flex-end' : 'flex-start';
|
||||||
|
|
||||||
const messageContent = document.createElement('div');
|
const messageContent = document.createElement('div');
|
||||||
messageContent.className = `message ${message.sender === myAddresses[0] ? 'user' : ''}`;
|
messageContent.className = `message ${message.metadata.sender === myAddresses[0] ? 'user' : ''}`;
|
||||||
|
|
||||||
|
const senderEmoji = await addressToEmoji(message.metadata.sender);
|
||||||
|
|
||||||
messageContent.innerHTML = `
|
messageContent.innerHTML = `
|
||||||
<div class="message-content">
|
<div class="message-content">
|
||||||
<strong>${await addressToEmoji(message.sender)}</strong>: ${message.text}
|
<strong>${senderEmoji}</strong>: ${message.metadata.text}
|
||||||
|
</div>
|
||||||
|
<div class="message-time">
|
||||||
|
${new Date(message.metadata.timestamp).toLocaleString('fr-FR')}
|
||||||
</div>
|
</div>
|
||||||
<div class="message-time">${new Date(message.timestamp).toLocaleString('fr-FR')}</div>
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
messageElement.appendChild(messageContent);
|
messageElement.appendChild(messageContent);
|
||||||
messagesContainer.appendChild(messageElement);
|
messagesContainer.appendChild(messageElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Scroll vers le bas
|
||||||
this.scrollToBottom(messagesContainer);
|
this.scrollToBottom(messagesContainer);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
cursorRequest.onerror = () => {
|
||||||
|
console.error("Error loading messages:", cursorRequest.error);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error loading chat:', error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
|
private async toggleMembers(roleData: any, roleElement: HTMLElement) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user