From ed578be468c46344aa7ddb5d1276e4643a02be16 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 26 Feb 2025 09:33:07 +0100 Subject: [PATCH] Add isLoading variable --- src/pages/chat/chat.ts | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/pages/chat/chat.ts b/src/pages/chat/chat.ts index f0d6aa4..af63e64 100755 --- a/src/pages/chat/chat.ts +++ b/src/pages/chat/chat.ts @@ -50,7 +50,9 @@ class ChatElement extends HTMLElement { private selectedRole: string | null = null; private userProcessSet: Set = new Set(); private dmMembersSet: Set = new Set(); - private addressMap: Record = {}; + private addressMap: Record = {}; + private isLoading = false; + constructor() { super(); @@ -585,7 +587,13 @@ class ChatElement extends HTMLElement { } private async loadMemberChat(pairingProcess: string) { + if (this.isLoading) { + console.log('Already loading messages, skipping...'); + return; + } + try { + this.isLoading = true; const service = await Services.getInstance(); const myAddresses = await service.getMemberFromDevice(); const database = await Database.getInstance(); @@ -763,6 +771,8 @@ class ChatElement extends HTMLElement { this.scrollToBottom(messagesContainer); } catch (error) { console.error('❌ Error in loadMemberChat:', error); + } finally { + this.isLoading = false; } } @@ -1804,17 +1814,23 @@ class ChatElement extends HTMLElement { await this.loadAllProcesses(processSet); } - if (this.selectedMember && this.selectedMember.length > 0) { + if (this.selectedMember && this.selectedMember.length > 0 && !this.isLoading) { console.log('🔍 Loading chat for selected member:', this.selectedMember); await this.loadMemberChat(this.selectedMember); } else { console.warn('⚠️ No member selected yet. Waiting for selection...'); } + let timeout: NodeJS.Timeout; window.addEventListener('process-updated', async (e: CustomEvent) => { const processId = e.detail.processId; if (processId === this.processId) { - setTimeout(async () => await this.reloadMemberChat(this.selectedMember), 3000); + clearTimeout(timeout); + timeout = setTimeout(async () => { + if (!this.isLoading) { + await this.reloadMemberChat(this.selectedMember); + } + }, 3000); } }); }