diff --git a/extensions/nextcloud-talk/src/accounts.ts b/extensions/nextcloud-talk/src/accounts.ts index b95d94d9c07..dffa201d88f 100644 --- a/extensions/nextcloud-talk/src/accounts.ts +++ b/extensions/nextcloud-talk/src/accounts.ts @@ -63,10 +63,11 @@ function resolveNextcloudTalkSecret( cfg: CoreConfig, opts: { accountId?: string }, ): { secret: string; source: ResolvedNextcloudTalkAccount["secretSource"] } { - const merged = mergeNextcloudTalkAccountConfig(cfg, opts.accountId ?? DEFAULT_ACCOUNT_ID); + const resolvedAccountId = opts.accountId ?? resolveDefaultNextcloudTalkAccountId(cfg); + const merged = mergeNextcloudTalkAccountConfig(cfg, resolvedAccountId); const envSecret = process.env.NEXTCLOUD_TALK_BOT_SECRET?.trim(); - if (envSecret && (!opts.accountId || opts.accountId === DEFAULT_ACCOUNT_ID)) { + if (envSecret && resolvedAccountId === DEFAULT_ACCOUNT_ID) { return { secret: envSecret, source: "env" }; } @@ -83,7 +84,7 @@ function resolveNextcloudTalkSecret( const inlineSecret = normalizeResolvedSecretInputString({ value: merged.botSecret, - path: `channels.nextcloud-talk.accounts.${opts.accountId ?? DEFAULT_ACCOUNT_ID}.botSecret`, + path: `channels.nextcloud-talk.accounts.${resolvedAccountId}.botSecret`, }); if (inlineSecret) { return { secret: inlineSecret, source: "config" }; @@ -97,6 +98,7 @@ export function resolveNextcloudTalkAccount(params: { accountId?: string | null; }): ResolvedNextcloudTalkAccount { const baseEnabled = params.cfg.channels?.["nextcloud-talk"]?.enabled !== false; + const resolvedAccountId = params.accountId ?? resolveDefaultNextcloudTalkAccountId(params.cfg); const resolve = (accountId: string) => { const merged = mergeNextcloudTalkAccountConfig(params.cfg, accountId); @@ -124,7 +126,7 @@ export function resolveNextcloudTalkAccount(params: { }; return resolveAccountWithDefaultFallback({ - accountId: params.accountId, + accountId: resolvedAccountId, normalizeAccountId, resolvePrimary: resolve, hasCredential: (account) => account.secretSource !== "none", diff --git a/extensions/nextcloud-talk/src/setup.test.ts b/extensions/nextcloud-talk/src/setup.test.ts index 3cbb14d51bc..68ee3223db8 100644 --- a/extensions/nextcloud-talk/src/setup.test.ts +++ b/extensions/nextcloud-talk/src/setup.test.ts @@ -363,4 +363,28 @@ describe("resolveNextcloudTalkAccount", () => { expect(account.secretSource).toBe("none"); fs.rmSync(dir, { recursive: true, force: true }); }); + + it("uses configured defaultAccount when accountId is omitted", () => { + const account = resolveNextcloudTalkAccount({ + cfg: { + channels: { + "nextcloud-talk": { + defaultAccount: "work", + botSecret: "top-secret", + accounts: { + work: { + baseUrl: "https://cloud.example.com", + botSecret: "work-secret", + }, + }, + }, + }, + } as CoreConfig, + }); + + expect(account.accountId).toBe("work"); + expect(account.baseUrl).toBe("https://cloud.example.com"); + expect(account.secret).toBe("work-secret"); + expect(account.secretSource).toBe("config"); + }); });