diff --git a/web/grpc/identity-service-client-proxy.js b/web/grpc/identity-service-client-proxy.js --- a/web/grpc/identity-service-client-proxy.js +++ b/web/grpc/identity-service-client-proxy.js @@ -14,7 +14,6 @@ UserDevicesOlmInboundKeys, UserDevicesOlmOutboundKeys, } from 'lib/types/identity-service-types.js'; -import { getConfig } from 'lib/utils/config.js'; import { type CommSharedWorker, @@ -35,7 +34,6 @@ await sharedWorker.schedule({ type: workerRequestMessageTypes.CREATE_IDENTITY_SERVICE_CLIENT, opaqueWasmPath: getOpaqueWasmPath(), - platformDetails: getConfig().platformDetails, authLayer, }); diff --git a/web/shared-worker/shared-worker-provider.js b/web/shared-worker/shared-worker-provider.js --- a/web/shared-worker/shared-worker-provider.js +++ b/web/shared-worker/shared-worker-provider.js @@ -76,7 +76,8 @@ }); } - const codeVersion = getConfig().platformDetails.codeVersion ?? ''; + const platformDetails = getConfig().platformDetails; + const codeVersion = platformDetails.codeVersion ?? ''; const workerName = `comm-app-shared-worker-${codeVersion}`; this.worker = new SharedWorker(DATABASE_WORKER_PATH, workerName); @@ -96,6 +97,7 @@ invariant(this.workerProxy, 'Worker proxy should exist'); await this.workerProxy.scheduleOnWorker({ type: workerRequestMessageTypes.INIT, + platformDetails, webworkerModulesFilePath: `${origin}${baseURL}${WORKERS_MODULES_DIR_PATH}`, encryptionKey, commQueryExecutorFilename, diff --git a/web/shared-worker/worker/identity-client.js b/web/shared-worker/worker/identity-client.js --- a/web/shared-worker/worker/identity-client.js +++ b/web/shared-worker/worker/identity-client.js @@ -1,5 +1,7 @@ // @flow +import type { PlatformDetails } from 'lib/types/device-types.js'; + import { getNewDeviceKeyUpload, getExistingDeviceKeyUpload, @@ -19,13 +21,14 @@ async function processAppIdentityClientRequest( sqliteQueryExecutor: SQLiteQueryExecutor, dbModule: EmscriptenModule, + platformDetails: PlatformDetails, message: WorkerRequestMessage, ): Promise { if ( message.type === workerRequestMessageTypes.CREATE_IDENTITY_SERVICE_CLIENT ) { identityClient = new IdentityServiceClientWrapper( - message.platformDetails, + platformDetails, message.opaqueWasmPath, message.authLayer, async () => getNewDeviceKeyUpload(), diff --git a/web/shared-worker/worker/shared-worker.js b/web/shared-worker/worker/shared-worker.js --- a/web/shared-worker/worker/shared-worker.js +++ b/web/shared-worker/worker/shared-worker.js @@ -14,6 +14,8 @@ getSQLiteQueryExecutor, setDBModule, setSQLiteQueryExecutor, + getPlatformDetails, + setPlatformDetails, } from './worker-database.js'; import initBackupClientModule from '../../backup-client-wasm/wasm/backup-client-wasm.js'; import { @@ -175,6 +177,7 @@ // database operations if (message.type === workerRequestMessageTypes.INIT) { + setPlatformDetails(message.platformDetails); const promises = [ initDatabase( message.webworkerModulesFilePath, @@ -255,9 +258,16 @@ if (isOlmAPIRequest) { result = await processAppOlmApiRequest(message); } else if (isIdentityClientRequest) { + const platformDetails = getPlatformDetails(); + if (!platformDetails) { + throw new Error( + 'Platform details not set, unable to process identity client request', + ); + } result = await processAppIdentityClientRequest( sqliteQueryExecutor, dbModule, + platformDetails, message, ); } else if ( diff --git a/web/shared-worker/worker/worker-database.js b/web/shared-worker/worker/worker-database.js --- a/web/shared-worker/worker/worker-database.js +++ b/web/shared-worker/worker/worker-database.js @@ -1,5 +1,7 @@ // @flow +import type { PlatformDetails } from 'lib/types/device-types.js'; + import type { EmscriptenModule } from '../types/module.js'; import type { SQLiteQueryExecutor } from '../types/sqlite-query-executor.js'; @@ -23,9 +25,21 @@ dbModule = newDBModule; } +let platformDetails: ?PlatformDetails = null; + +function getPlatformDetails(): ?PlatformDetails { + return platformDetails; +} + +function setPlatformDetails(newPlatformDetails: PlatformDetails) { + platformDetails = newPlatformDetails; +} + export { getSQLiteQueryExecutor, setSQLiteQueryExecutor, getDBModule, setDBModule, + getPlatformDetails, + setPlatformDetails, }; diff --git a/web/types/worker-types.js b/web/types/worker-types.js --- a/web/types/worker-types.js +++ b/web/types/worker-types.js @@ -58,6 +58,7 @@ export type InitWorkerRequestMessage = { +type: 1, + +platformDetails: PlatformDetails, +webworkerModulesFilePath: string, +commQueryExecutorFilename: ?string, +encryptionKey?: ?SubtleCrypto$JsonWebKey, @@ -123,7 +124,6 @@ export type CreateIdentityServiceClientRequestMessage = { +type: 13, +opaqueWasmPath: string, - +platformDetails: PlatformDetails, +authLayer: ?IdentityServiceAuthLayer, };