diff --git a/extensions/matrix/src/matrix/client/shared.ts b/extensions/matrix/src/matrix/client/shared.ts index f8424bdcc0b..5573a60888d 100644 --- a/extensions/matrix/src/matrix/client/shared.ts +++ b/extensions/matrix/src/matrix/client/shared.ts @@ -3,9 +3,21 @@ import type { CoreConfig } from "../../types.js"; import type { MatrixClient } from "../sdk.js"; import { LogService } from "../sdk/logger.js"; import { resolveMatrixAuth, resolveMatrixAuthContext } from "./config.js"; -import { createMatrixClient } from "./create-client.js"; import type { MatrixAuth } from "./types.js"; +type MatrixCreateClientDeps = { + createMatrixClient: typeof import("./create-client.js").createMatrixClient; +}; + +let matrixCreateClientDepsPromise: Promise | undefined; + +async function loadMatrixCreateClientDeps(): Promise { + matrixCreateClientDepsPromise ??= import("./create-client.js").then((runtime) => ({ + createMatrixClient: runtime.createMatrixClient, + })); + return await matrixCreateClientDepsPromise; +} + type SharedMatrixClientState = { client: MatrixClient; key: string; @@ -38,6 +50,7 @@ async function createSharedMatrixClient(params: { auth: MatrixAuth; timeoutMs?: number; }): Promise { + const { createMatrixClient } = await loadMatrixCreateClientDeps(); const client = await createMatrixClient({ homeserver: params.auth.homeserver, userId: params.auth.userId,