refactor: add inbound context helpers
This commit is contained in:
38
src/channels/sender-identity.ts
Normal file
38
src/channels/sender-identity.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
import type { MsgContext } from "../auto-reply/templating.js";
|
||||
import { normalizeChatType } from "./chat-type.js";
|
||||
|
||||
export function validateSenderIdentity(ctx: MsgContext): string[] {
|
||||
const issues: string[] = [];
|
||||
|
||||
const chatType = normalizeChatType(ctx.ChatType);
|
||||
const isDirect = chatType === "direct";
|
||||
|
||||
const senderId = ctx.SenderId?.trim() || "";
|
||||
const senderName = ctx.SenderName?.trim() || "";
|
||||
const senderUsername = ctx.SenderUsername?.trim() || "";
|
||||
const senderE164 = ctx.SenderE164?.trim() || "";
|
||||
|
||||
if (!isDirect) {
|
||||
if (!senderId && !senderName && !senderUsername && !senderE164) {
|
||||
issues.push("missing sender identity (SenderId/SenderName/SenderUsername/SenderE164)");
|
||||
}
|
||||
}
|
||||
|
||||
if (senderE164) {
|
||||
if (!/^\+\d{3,}$/.test(senderE164)) {
|
||||
issues.push(`invalid SenderE164: ${senderE164}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (senderUsername) {
|
||||
if (senderUsername.includes("@")) issues.push(`SenderUsername should not include "@": ${senderUsername}`);
|
||||
if (/\s/.test(senderUsername)) issues.push(`SenderUsername should not include whitespace: ${senderUsername}`);
|
||||
}
|
||||
|
||||
if (ctx.SenderId != null && !senderId) {
|
||||
issues.push("SenderId is set but empty");
|
||||
}
|
||||
|
||||
return issues;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user