refactor!: rename chat providers to channels
This commit is contained in:
@@ -1,52 +1,52 @@
|
||||
import { normalizeAccountId } from "../routing/session-key.js";
|
||||
import type { ClawdbotConfig } from "./config.js";
|
||||
|
||||
export type GroupPolicyProvider = "whatsapp" | "telegram" | "imessage";
|
||||
export type GroupPolicyChannel = "whatsapp" | "telegram" | "imessage";
|
||||
|
||||
export type ProviderGroupConfig = {
|
||||
export type ChannelGroupConfig = {
|
||||
requireMention?: boolean;
|
||||
};
|
||||
|
||||
export type ProviderGroupPolicy = {
|
||||
export type ChannelGroupPolicy = {
|
||||
allowlistEnabled: boolean;
|
||||
allowed: boolean;
|
||||
groupConfig?: ProviderGroupConfig;
|
||||
defaultConfig?: ProviderGroupConfig;
|
||||
groupConfig?: ChannelGroupConfig;
|
||||
defaultConfig?: ChannelGroupConfig;
|
||||
};
|
||||
|
||||
type ProviderGroups = Record<string, ProviderGroupConfig>;
|
||||
type ChannelGroups = Record<string, ChannelGroupConfig>;
|
||||
|
||||
function resolveProviderGroups(
|
||||
function resolveChannelGroups(
|
||||
cfg: ClawdbotConfig,
|
||||
provider: GroupPolicyProvider,
|
||||
channel: GroupPolicyChannel,
|
||||
accountId?: string | null,
|
||||
): ProviderGroups | undefined {
|
||||
): ChannelGroups | undefined {
|
||||
const normalizedAccountId = normalizeAccountId(accountId);
|
||||
const providerConfig = (cfg as Record<string, unknown>)[provider] as
|
||||
const channelConfig = cfg.channels?.[channel] as
|
||||
| {
|
||||
accounts?: Record<string, { groups?: ProviderGroups }>;
|
||||
groups?: ProviderGroups;
|
||||
accounts?: Record<string, { groups?: ChannelGroups }>;
|
||||
groups?: ChannelGroups;
|
||||
}
|
||||
| undefined;
|
||||
if (!providerConfig) return undefined;
|
||||
if (!channelConfig) return undefined;
|
||||
const accountGroups =
|
||||
providerConfig.accounts?.[normalizedAccountId]?.groups ??
|
||||
providerConfig.accounts?.[
|
||||
Object.keys(providerConfig.accounts ?? {}).find(
|
||||
channelConfig.accounts?.[normalizedAccountId]?.groups ??
|
||||
channelConfig.accounts?.[
|
||||
Object.keys(channelConfig.accounts ?? {}).find(
|
||||
(key) => key.toLowerCase() === normalizedAccountId.toLowerCase(),
|
||||
) ?? ""
|
||||
]?.groups;
|
||||
return accountGroups ?? providerConfig.groups;
|
||||
return accountGroups ?? channelConfig.groups;
|
||||
}
|
||||
|
||||
export function resolveProviderGroupPolicy(params: {
|
||||
export function resolveChannelGroupPolicy(params: {
|
||||
cfg: ClawdbotConfig;
|
||||
provider: GroupPolicyProvider;
|
||||
channel: GroupPolicyChannel;
|
||||
groupId?: string | null;
|
||||
accountId?: string | null;
|
||||
}): ProviderGroupPolicy {
|
||||
const { cfg, provider } = params;
|
||||
const groups = resolveProviderGroups(cfg, provider, params.accountId);
|
||||
}): ChannelGroupPolicy {
|
||||
const { cfg, channel } = params;
|
||||
const groups = resolveChannelGroups(cfg, channel, params.accountId);
|
||||
const allowlistEnabled = Boolean(groups && Object.keys(groups).length > 0);
|
||||
const normalizedId = params.groupId?.trim();
|
||||
const groupConfig = normalizedId && groups ? groups[normalizedId] : undefined;
|
||||
@@ -67,16 +67,16 @@ export function resolveProviderGroupPolicy(params: {
|
||||
};
|
||||
}
|
||||
|
||||
export function resolveProviderGroupRequireMention(params: {
|
||||
export function resolveChannelGroupRequireMention(params: {
|
||||
cfg: ClawdbotConfig;
|
||||
provider: GroupPolicyProvider;
|
||||
channel: GroupPolicyChannel;
|
||||
groupId?: string | null;
|
||||
accountId?: string | null;
|
||||
requireMentionOverride?: boolean;
|
||||
overrideOrder?: "before-config" | "after-config";
|
||||
}): boolean {
|
||||
const { requireMentionOverride, overrideOrder = "after-config" } = params;
|
||||
const { groupConfig, defaultConfig } = resolveProviderGroupPolicy(params);
|
||||
const { groupConfig, defaultConfig } = resolveChannelGroupPolicy(params);
|
||||
const configMention =
|
||||
typeof groupConfig?.requireMention === "boolean"
|
||||
? groupConfig.requireMention
|
||||
|
||||
Reference in New Issue
Block a user