Registering service worker must be called beside db initialisation
This commit is contained in:
parent
d601d94bf6
commit
b9851c587e
@ -134,7 +134,8 @@ export async function init(): Promise<void> {
|
|||||||
try {
|
try {
|
||||||
const services = await Services.getInstance();
|
const services = await Services.getInstance();
|
||||||
(window as any).myService = services;
|
(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();
|
let device = await services.getDeviceFromDatabase();
|
||||||
console.log('🚀 ~ setTimeout ~ device:', device);
|
console.log('🚀 ~ setTimeout ~ device:', device);
|
||||||
|
|
||||||
|
@ -84,7 +84,6 @@ export class Database {
|
|||||||
|
|
||||||
request.onsuccess = async () => {
|
request.onsuccess = async () => {
|
||||||
this.db = request.result;
|
this.db = request.result;
|
||||||
await this.initServiceWorker();
|
|
||||||
resolve();
|
resolve();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -110,15 +109,16 @@ export class Database {
|
|||||||
return objectList;
|
return objectList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async initServiceWorker() {
|
public async registerServiceWorker(path: string) {
|
||||||
if (!('serviceWorker' in navigator)) return; // Ensure service workers are supported
|
if (!('serviceWorker' in navigator)) return; // Ensure service workers are supported
|
||||||
|
console.log('registering worker at', path);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Get existing service worker registrations
|
// Get existing service worker registrations
|
||||||
const registrations = await navigator.serviceWorker.getRegistrations();
|
const registrations = await navigator.serviceWorker.getRegistrations();
|
||||||
if (registrations.length === 0) {
|
if (registrations.length === 0) {
|
||||||
// No existing workers: register a new one.
|
// 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);
|
console.log('Service Worker registered with scope:', this.serviceWorkerRegistration.scope);
|
||||||
} else if (registrations.length === 1) {
|
} else if (registrations.length === 1) {
|
||||||
// One existing worker: update it (restart it) without unregistering.
|
// 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...');
|
console.log('Multiple Service Worker(s) detected. Unregistering all...');
|
||||||
await Promise.all(registrations.map(reg => reg.unregister()));
|
await Promise.all(registrations.map(reg => reg.unregister()));
|
||||||
console.log('All previous Service Workers unregistered.');
|
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);
|
console.log('Service Worker registered with scope:', this.serviceWorkerRegistration.scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ export class Database {
|
|||||||
await this.handleServiceWorkerMessage(event.data);
|
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 () => {
|
this.serviceWorkerCheckIntervalId = window.setInterval(async () => {
|
||||||
const activeWorker = this.serviceWorkerRegistration?.active || (await this.waitForServiceWorkerActivation(this.serviceWorkerRegistration!));
|
const activeWorker = this.serviceWorkerRegistration?.active || (await this.waitForServiceWorkerActivation(this.serviceWorkerRegistration!));
|
||||||
const service = await Services.getInstance();
|
const service = await Services.getInstance();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user