diff --git a/src/services/database.service.ts b/src/services/database.service.ts index 2e00af5..c9807e9 100755 --- a/src/services/database.service.ts +++ b/src/services/database.service.ts @@ -1,13 +1,13 @@ import Services from './service'; -class Database { +export class Database { private static instance: Database; private db: IDBDatabase | null = null; private dbName: string = '4nk'; private dbVersion: number = 1; private serviceWorkerRegistration: ServiceWorkerRegistration | null = null; - private messageChannel: MessageChannel = new MessageChannel(); - private messageChannelForGet: MessageChannel = new MessageChannel(); + private messageChannel: MessageChannel | null = null; + private messageChannelForGet: MessageChannel | null = null; private storeDefinitions = { AnkLabels: { name: 'labels', @@ -113,6 +113,10 @@ class Database { } private async initServiceWorker() { + if (this.messageChannel) { + console.log('Persistent update channel already initialized.'); + return; + } if ('serviceWorker' in navigator) { try { const registration = await navigator.serviceWorker.register('/src/service-workers/database.worker.js', { type: 'module' }); @@ -122,6 +126,8 @@ class Database { await this.checkForUpdates(); // Set up the message channels + this.messageChannel = new MessageChannel(); + this.messageChannelForGet = new MessageChannel(); this.messageChannel.port1.onmessage = this.handleAddObjectResponse; this.messageChannelForGet.port1.onmessage = this.handleGetObjectResponse; registration.active?.postMessage(