diff --git a/src/router.ts b/src/router.ts index 54d6345..806b7d7 100755 --- a/src/router.ts +++ b/src/router.ts @@ -134,7 +134,8 @@ export async function init(): Promise { try { const services = await Services.getInstance(); (window as any).myService = services; - await Database.getInstance(); + const db = await Database.getInstance(); + await db.registerServiceWorker('/src/service-workers/database.worker.js'); let device = await services.getDeviceFromDatabase(); console.log('🚀 ~ setTimeout ~ device:', device); diff --git a/src/services/database.service.ts b/src/services/database.service.ts index e5c7be7..663de5e 100755 --- a/src/services/database.service.ts +++ b/src/services/database.service.ts @@ -84,7 +84,6 @@ export class Database { request.onsuccess = async () => { this.db = request.result; - await this.initServiceWorker(); resolve(); }; @@ -110,15 +109,16 @@ export class Database { return objectList; } - private async initServiceWorker() { + public async registerServiceWorker(path: string) { if (!('serviceWorker' in navigator)) return; // Ensure service workers are supported + console.log('registering worker at', path); try { // Get existing service worker registrations const registrations = await navigator.serviceWorker.getRegistrations(); if (registrations.length === 0) { // No existing workers: register a new one. - this.serviceWorkerRegistration = await navigator.serviceWorker.register('/src/service-workers/database.worker.js', { type: 'module' }); + this.serviceWorkerRegistration = await navigator.serviceWorker.register(path, { type: 'module' }); console.log('Service Worker registered with scope:', this.serviceWorkerRegistration.scope); } else if (registrations.length === 1) { // One existing worker: update it (restart it) without unregistering. @@ -130,7 +130,7 @@ export class Database { console.log('Multiple Service Worker(s) detected. Unregistering all...'); await Promise.all(registrations.map(reg => reg.unregister())); console.log('All previous Service Workers unregistered.'); - this.serviceWorkerRegistration = await navigator.serviceWorker.register('/src/service-workers/database.worker.js', { type: 'module' }); + this.serviceWorkerRegistration = await navigator.serviceWorker.register(path, { type: 'module' }); console.log('Service Worker registered with scope:', this.serviceWorkerRegistration.scope); } @@ -142,7 +142,7 @@ export class Database { await this.handleServiceWorkerMessage(event.data); }); - // Set up a periodic check to ensure the service worker is active and to send a SYNC message. + // Set up a periodic check to ensure the service worker is active and to send a SCAN message. this.serviceWorkerCheckIntervalId = window.setInterval(async () => { const activeWorker = this.serviceWorkerRegistration?.active || (await this.waitForServiceWorkerActivation(this.serviceWorkerRegistration!)); const service = await Services.getInstance();