fix: honor nextcloud default runtime account

This commit is contained in:
Tak Hoffman 2026-04-03 13:24:54 -05:00
parent 26b7260bf4
commit e063f67ac0
No known key found for this signature in database
2 changed files with 30 additions and 4 deletions

View File

@ -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",

View File

@ -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");
});
});