Update loadAllMembers() to add the member labels functionnality

This commit is contained in:
NicolasCantu 2025-01-30 12:05:11 +01:00
parent 47e047a082
commit b8bbe9e7b9

View File

@ -400,15 +400,15 @@ class ChatElement extends HTMLElement {
} }
private async loadAllMembers() { private async loadAllMembers() {
console.log('🎯 Loading all members');
const groupList = this.shadowRoot?.querySelector('#group-list'); const groupList = this.shadowRoot?.querySelector('#group-list');
if (!groupList) return; if (!groupList) return;
const service = await Services.getInstance(); const service = await Services.getInstance();
const members = await service.getAllMembers(); const members = await service.getAllMembers();
console.log("MEMBERS: ", members); const database = await Database.getInstance();
const db = database.db;
const memberList = document.createElement('div'); const memberList = document.createElement('ul');
memberList.className = 'member-list active'; memberList.className = 'member-list active';
for (const [processId, member] of Object.entries(members)) { for (const [processId, member] of Object.entries(members)) {
@ -422,19 +422,52 @@ class ChatElement extends HTMLElement {
emojiSpan.className = 'member-emoji'; emojiSpan.className = 'member-emoji';
const emojis = await addressToEmoji(processId); const emojis = await addressToEmoji(processId);
emojiSpan.textContent = `Member : ${emojis}`; emojiSpan.dataset.emojis = emojis;
const transaction = db.transaction("labels", "readonly");
const store = transaction.objectStore("labels");
const request = store.get(emojis);
request.onsuccess = () => {
const label = request.result;
emojiSpan.textContent = label ? `${label.label} (${emojis})` : `Member (${emojis})`;
};
request.onerror = () => {
emojiSpan.textContent = `Member (${emojis})`;
};
memberContainer.appendChild(emojiSpan); memberContainer.appendChild(emojiSpan);
memberItem.appendChild(memberContainer); memberItem.appendChild(memberContainer);
memberList.appendChild(memberItem);
memberItem.addEventListener('click', async () => { memberItem.addEventListener('click', async () => {
try {
await this.loadMemberChat(processId); await this.loadMemberChat(processId);
} catch (error) {
console.error('Error loading member chat:', error);
}
}); });
const editLabelButton = document.createElement('span');
editLabelButton.className = 'edit-label-button';
editLabelButton.textContent = "✏️";
editLabelButton.addEventListener("dblclick", async (event) => {
event.stopPropagation();
event.preventDefault();
const newLabel = prompt("Set a new name for the member:");
if (!newLabel) return;
const editTransaction = db.transaction("labels", "readwrite");
const editStore = editTransaction.objectStore("labels");
const labelObject = { emoji: emojis, label: newLabel };
const putRequest = editStore.put(labelObject);
putRequest.onsuccess = () => {
emojiSpan.textContent = `${newLabel} : ${emojis}`;
};
});
memberList.appendChild(memberItem);
memberList.appendChild(editLabelButton);
} }
groupList.appendChild(memberList); groupList.appendChild(memberList);
@ -449,7 +482,7 @@ class ChatElement extends HTMLElement {
const recipientAddresses = memberAddresses.sp_addresses; const recipientAddresses = memberAddresses.sp_addresses;
for (const [processId, process] of Object.entries(processes)) { for (const [processId, process] of Object.entries(processes)) {
const description = await service.getDescription(processId, process); const description = await service.getDescription(processId, process);
console.log('Process description:', description); // console.log('Process description:', description);
if (description !== "dm") { if (description !== "dm") {
continue; continue;
} }