refactor(channels): share target parsing helpers

This commit is contained in:
Peter Steinberger
2026-02-17 00:10:36 +00:00
parent 9bfd3ca195
commit fbd3786e7a
3 changed files with 78 additions and 28 deletions

View File

@@ -43,6 +43,30 @@ export function ensureTargetId(params: {
return params.candidate;
}
export function parseTargetMention(params: {
raw: string;
mentionPattern: RegExp;
kind: MessagingTargetKind;
}): MessagingTarget | undefined {
const match = params.raw.match(params.mentionPattern);
if (!match?.[1]) {
return undefined;
}
return buildMessagingTarget(params.kind, match[1], params.raw);
}
export function parseTargetPrefix(params: {
raw: string;
prefix: string;
kind: MessagingTargetKind;
}): MessagingTarget | undefined {
if (!params.raw.startsWith(params.prefix)) {
return undefined;
}
const id = params.raw.slice(params.prefix.length).trim();
return id ? buildMessagingTarget(params.kind, id, params.raw) : undefined;
}
export function requireTargetKind(params: {
platform: string;
target: MessagingTarget | undefined;