refactor(channels): share directory allowFrom parsing

This commit is contained in:
Peter Steinberger 2026-02-16 01:49:16 +00:00
parent 31d1ed351f
commit 618008b483
1 changed files with 26 additions and 26 deletions

View File

@ -14,6 +14,26 @@ export type DirectoryConfigParams = {
limit?: number | null;
};
function addAllowFromAndDmsIds(
ids: Set<string>,
allowFrom: readonly unknown[] | undefined,
dms: Record<string, unknown> | undefined,
) {
for (const entry of allowFrom ?? []) {
const raw = String(entry).trim();
if (!raw || raw === "*") {
continue;
}
ids.add(raw);
}
for (const id of Object.keys(dms ?? {})) {
const trimmed = id.trim();
if (trimmed) {
ids.add(trimmed);
}
}
}
export async function listSlackDirectoryPeersFromConfig(
params: DirectoryConfigParams,
): Promise<ChannelDirectoryEntry[]> {
@ -21,19 +41,7 @@ export async function listSlackDirectoryPeersFromConfig(
const q = params.query?.trim().toLowerCase() || "";
const ids = new Set<string>();
for (const entry of account.config.allowFrom ?? account.dm?.allowFrom ?? []) {
const raw = String(entry).trim();
if (!raw || raw === "*") {
continue;
}
ids.add(raw);
}
for (const id of Object.keys(account.config.dms ?? {})) {
const trimmed = id.trim();
if (trimmed) {
ids.add(trimmed);
}
}
addAllowFromAndDmsIds(ids, account.config.allowFrom ?? account.dm?.allowFrom, account.config.dms);
for (const channel of Object.values(account.config.channels ?? {})) {
for (const user of channel.users ?? []) {
const raw = String(user).trim();
@ -84,19 +92,11 @@ export async function listDiscordDirectoryPeersFromConfig(
const q = params.query?.trim().toLowerCase() || "";
const ids = new Set<string>();
for (const entry of account.config.allowFrom ?? account.config.dm?.allowFrom ?? []) {
const raw = String(entry).trim();
if (!raw || raw === "*") {
continue;
}
ids.add(raw);
}
for (const id of Object.keys(account.config.dms ?? {})) {
const trimmed = id.trim();
if (trimmed) {
ids.add(trimmed);
}
}
addAllowFromAndDmsIds(
ids,
account.config.allowFrom ?? account.config.dm?.allowFrom,
account.config.dms,
);
for (const guild of Object.values(account.config.guilds ?? {})) {
for (const entry of guild.users ?? []) {
const raw = String(entry).trim();