mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-08 15:48:28 +00:00
refactor(channels): share case-insensitive account lookup in dock
This commit is contained in:
@@ -128,6 +128,22 @@ function buildIMessageThreadToolContext(params: {
|
|||||||
hasRepliedRef: params.hasRepliedRef,
|
hasRepliedRef: params.hasRepliedRef,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function resolveCaseInsensitiveAccount<T>(
|
||||||
|
accounts: Record<string, T> | undefined,
|
||||||
|
accountId?: string | null,
|
||||||
|
): T | undefined {
|
||||||
|
if (!accounts) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const normalized = normalizeAccountId(accountId);
|
||||||
|
return (
|
||||||
|
accounts[normalized] ??
|
||||||
|
accounts[
|
||||||
|
Object.keys(accounts).find((key) => key.toLowerCase() === normalized.toLowerCase()) ?? ""
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
// Channel docks: lightweight channel metadata/behavior for shared code paths.
|
// Channel docks: lightweight channel metadata/behavior for shared code paths.
|
||||||
//
|
//
|
||||||
// Rules:
|
// Rules:
|
||||||
@@ -282,14 +298,7 @@ const DOCKS: Record<ChatChannelId, ChannelDock> = {
|
|||||||
config: {
|
config: {
|
||||||
resolveAllowFrom: ({ cfg, accountId }) => {
|
resolveAllowFrom: ({ cfg, accountId }) => {
|
||||||
const channel = cfg.channels?.irc;
|
const channel = cfg.channels?.irc;
|
||||||
const normalized = normalizeAccountId(accountId);
|
const account = resolveCaseInsensitiveAccount(channel?.accounts, accountId);
|
||||||
const account =
|
|
||||||
channel?.accounts?.[normalized] ??
|
|
||||||
channel?.accounts?.[
|
|
||||||
Object.keys(channel?.accounts ?? {}).find(
|
|
||||||
(key) => key.toLowerCase() === normalized.toLowerCase(),
|
|
||||||
) ?? ""
|
|
||||||
];
|
|
||||||
return (account?.allowFrom ?? channel?.allowFrom ?? []).map((entry) => String(entry));
|
return (account?.allowFrom ?? channel?.allowFrom ?? []).map((entry) => String(entry));
|
||||||
},
|
},
|
||||||
formatAllowFrom: ({ allowFrom }) =>
|
formatAllowFrom: ({ allowFrom }) =>
|
||||||
@@ -353,14 +362,7 @@ const DOCKS: Record<ChatChannelId, ChannelDock> = {
|
|||||||
dm?: { allowFrom?: Array<string | number> };
|
dm?: { allowFrom?: Array<string | number> };
|
||||||
}
|
}
|
||||||
| undefined;
|
| undefined;
|
||||||
const normalized = normalizeAccountId(accountId);
|
const account = resolveCaseInsensitiveAccount(channel?.accounts, accountId);
|
||||||
const account =
|
|
||||||
channel?.accounts?.[normalized] ??
|
|
||||||
channel?.accounts?.[
|
|
||||||
Object.keys(channel?.accounts ?? {}).find(
|
|
||||||
(key) => key.toLowerCase() === normalized.toLowerCase(),
|
|
||||||
) ?? ""
|
|
||||||
];
|
|
||||||
return (account?.dm?.allowFrom ?? channel?.dm?.allowFrom ?? []).map((entry) =>
|
return (account?.dm?.allowFrom ?? channel?.dm?.allowFrom ?? []).map((entry) =>
|
||||||
String(entry),
|
String(entry),
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user