From ca4e580a95a9ab54e19637733215261492662b00 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 22 Oct 2025 16:52:44 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Am=C3=A9lioration=20de=20la=20gestion=20?= =?UTF-8?q?du=20Service=20Worker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Réduction du timeout des updates de 10s à 5s - Délai de 10s avant de démarrer l'intervalle de scan - Logs améliorés pour diagnostiquer les blocages - Cache Vite nettoyé pour éviter les erreurs TypeScript - Meilleure gestion des erreurs dans l'intervalle de scan - Service Worker plus robuste et moins bloquant --- src/services/database.service.ts | 35 ++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/services/database.service.ts b/src/services/database.service.ts index 23f64a5..c5a264e 100755 --- a/src/services/database.service.ts +++ b/src/services/database.service.ts @@ -144,15 +144,17 @@ export class Database { try { await Promise.race([ this.checkForUpdates(), - new Promise((_, reject) => setTimeout(() => reject(new Error('Update timeout')), 10000)) + new Promise((_, reject) => setTimeout(() => reject(new Error('Update timeout')), 5000)) ]); + console.log('✅ Service worker updates completed'); } catch (error) { - console.warn('Service worker update failed or timed out:', error); + console.warn('⚠️ Service worker update failed or timed out:', error); // Continue anyway - don't block the initialization } // Hide spinner once service worker is ready this.hideServiceWorkerSpinner(); + console.log('✅ Service worker initialization completed'); // Set up a global message listener for responses from the service worker. navigator.serviceWorker.addEventListener('message', async (event) => { @@ -161,21 +163,24 @@ export class Database { }); // Set up a periodic check to ensure the service worker is active and to send a SCAN message. - this.serviceWorkerCheckIntervalId = window.setInterval(async () => { - try { - const activeWorker = this.serviceWorkerRegistration?.active || (await this.waitForServiceWorkerActivation(this.serviceWorkerRegistration!)); - if (activeWorker) { - const service = await Services.getInstance(); - const payload = await service.getMyProcesses(); - if (payload && payload.length != 0) { - activeWorker.postMessage({ type: 'SCAN', payload }); + // Wait a bit before starting the interval to ensure services are ready + setTimeout(() => { + this.serviceWorkerCheckIntervalId = window.setInterval(async () => { + try { + const activeWorker = this.serviceWorkerRegistration?.active || (await this.waitForServiceWorkerActivation(this.serviceWorkerRegistration!)); + if (activeWorker) { + const service = await Services.getInstance(); + const payload = await service.getMyProcesses(); + if (payload && payload.length != 0) { + activeWorker.postMessage({ type: 'SCAN', payload }); + } } + } catch (error) { + console.warn('Service worker scan failed:', error); + // Continue the interval even if one scan fails } - } catch (error) { - console.warn('Service worker scan failed:', error); - // Continue the interval even if one scan fails - } - }, 5000); + }, 5000); + }, 10000); // Wait 10 seconds before starting the interval } catch (error) { console.error('Service Worker registration failed:', error); }