fix(imessage): honor explicitly enabled accounts during startup (#118944)

This commit is contained in:
Peter Steinberger
2026-08-03 13:58:42 -07:00
committed by GitHub
parent 1cb030f1a9
commit 6fa63a4e67
2 changed files with 91 additions and 0 deletions
+90
View File
@@ -14,6 +14,96 @@ import {
} from "./accounts.js";
describe("resolveIMessageAccount", () => {
it.each([
["absent channel", {}, undefined, "default", true, false],
["empty channel", { channels: { imessage: {} } }, undefined, "default", true, false],
[
"explicitly enabled channel with default paths",
{ channels: { imessage: { enabled: true } } },
undefined,
"default",
true,
true,
],
[
"explicitly disabled channel",
{ channels: { imessage: { enabled: false } } },
undefined,
"default",
false,
false,
],
[
"explicitly enabled channel with an existing CLI path",
{ channels: { imessage: { enabled: true, cliPath: "imsg" } } },
undefined,
"default",
true,
true,
],
[
"explicitly enabled named account",
{ channels: { imessage: { accounts: { work: { enabled: true } } } } },
"work",
"work",
true,
true,
],
[
"explicitly disabled named account",
{ channels: { imessage: { accounts: { work: { enabled: false } } } } },
"work",
"work",
false,
false,
],
[
"empty named account",
{ channels: { imessage: { accounts: { work: {} } } } },
"work",
"work",
true,
false,
],
[
"named account inheriting explicit channel enablement",
{ channels: { imessage: { enabled: true, accounts: { work: {} } } } },
"work",
"work",
true,
true,
],
[
"configured named account under a disabled channel",
{ channels: { imessage: { enabled: false, accounts: { work: { enabled: true } } } } },
"work",
"work",
false,
true,
],
[
"explicitly enabled configured default account",
{
channels: {
imessage: { defaultAccount: "work", accounts: { work: { enabled: true } } },
},
},
undefined,
"work",
true,
true,
],
] as const)(
"resolves independent enabled and configured state for %s",
(_scenario, cfg, accountId, expectedAccountId, enabled, configured) => {
expect(resolveIMessageAccount({ cfg: cfg as never, accountId })).toMatchObject({
accountId: expectedAccountId,
enabled,
configured,
});
},
);
it("preserves top-level default account when named accounts are configured", () => {
const cfg = {
channels: {
+1
View File
@@ -96,6 +96,7 @@ export function resolveIMessageAccount(params: {
const merged = mergeIMessageAccountConfig(params.cfg, accountId);
const accountEnabled = merged.enabled !== false;
const configured = Boolean(
merged.enabled === true ||
merged.cliPath?.trim() ||
merged.dbPath?.trim() ||
merged.service ||