diff --git a/web/database/database-module-provider.js b/web/database/database-module-provider.js --- a/web/database/database-module-provider.js +++ b/web/database/database-module-provider.js @@ -47,37 +47,36 @@ return; } - if (clearDatabase && this.status.type === databaseStatuses.initSuccess) { - console.info('Clearing sensitive data'); - invariant(this.workerProxy, 'Worker proxy should exist'); - await this.workerProxy.scheduleOnWorker({ - type: workerRequestMessageTypes.CLEAR_SENSITIVE_DATA, - }); - this.status = { type: databaseStatuses.notRunning }; - } - if (this.status.type === databaseStatuses.initInProgress) { await this.status.initPromise; return; } if ( - this.status.type === databaseStatuses.initSuccess || + (this.status.type === databaseStatuses.initSuccess && !clearDatabase) || this.status.type === databaseStatuses.initError ) { return; } - this.worker = new SharedWorker(DATABASE_WORKER_PATH); - this.worker.onerror = console.error; - this.workerProxy = new WorkerConnectionProxy( - this.worker.port, - console.error, - ); + const initPromise = (async () => { + if (clearDatabase && this.status.type === databaseStatuses.initSuccess) { + console.info('Clearing sensitive data'); + invariant(this.workerProxy, 'Worker proxy should exist'); + await this.workerProxy.scheduleOnWorker({ + type: workerRequestMessageTypes.CLEAR_SENSITIVE_DATA, + }); + } - const origin = window.location.origin; + this.worker = new SharedWorker(DATABASE_WORKER_PATH); + this.worker.onerror = console.error; + this.workerProxy = new WorkerConnectionProxy( + this.worker.port, + console.error, + ); + + const origin = window.location.origin; - const initPromise = (async () => { try { let encryptionKey = null; if (isDesktopSafari) {