nullable persistent message channels
This commit is contained in:
parent
463f4d952c
commit
d5c5224a9f
@ -1,13 +1,13 @@
|
|||||||
import Services from './service';
|
import Services from './service';
|
||||||
|
|
||||||
class Database {
|
export class Database {
|
||||||
private static instance: Database;
|
private static instance: Database;
|
||||||
private db: IDBDatabase | null = null;
|
private db: IDBDatabase | null = null;
|
||||||
private dbName: string = '4nk';
|
private dbName: string = '4nk';
|
||||||
private dbVersion: number = 1;
|
private dbVersion: number = 1;
|
||||||
private serviceWorkerRegistration: ServiceWorkerRegistration | null = null;
|
private serviceWorkerRegistration: ServiceWorkerRegistration | null = null;
|
||||||
private messageChannel: MessageChannel = new MessageChannel();
|
private messageChannel: MessageChannel | null = null;
|
||||||
private messageChannelForGet: MessageChannel = new MessageChannel();
|
private messageChannelForGet: MessageChannel | null = null;
|
||||||
private storeDefinitions = {
|
private storeDefinitions = {
|
||||||
AnkLabels: {
|
AnkLabels: {
|
||||||
name: 'labels',
|
name: 'labels',
|
||||||
@ -113,6 +113,10 @@ class Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async initServiceWorker() {
|
private async initServiceWorker() {
|
||||||
|
if (this.messageChannel) {
|
||||||
|
console.log('Persistent update channel already initialized.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if ('serviceWorker' in navigator) {
|
if ('serviceWorker' in navigator) {
|
||||||
try {
|
try {
|
||||||
const registration = await navigator.serviceWorker.register('/src/service-workers/database.worker.js', { type: 'module' });
|
const registration = await navigator.serviceWorker.register('/src/service-workers/database.worker.js', { type: 'module' });
|
||||||
@ -122,6 +126,8 @@ class Database {
|
|||||||
await this.checkForUpdates();
|
await this.checkForUpdates();
|
||||||
|
|
||||||
// Set up the message channels
|
// Set up the message channels
|
||||||
|
this.messageChannel = new MessageChannel();
|
||||||
|
this.messageChannelForGet = new MessageChannel();
|
||||||
this.messageChannel.port1.onmessage = this.handleAddObjectResponse;
|
this.messageChannel.port1.onmessage = this.handleAddObjectResponse;
|
||||||
this.messageChannelForGet.port1.onmessage = this.handleGetObjectResponse;
|
this.messageChannelForGet.port1.onmessage = this.handleGetObjectResponse;
|
||||||
registration.active?.postMessage(
|
registration.active?.postMessage(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user