refactor: streamline outbound payload handling

This commit is contained in:
Peter Steinberger
2026-01-07 02:30:42 +00:00
parent 3fedd0d1d5
commit 4bf5f37a44
8 changed files with 254 additions and 150 deletions

View File

@@ -0,0 +1,44 @@
import type { ReplyPayload } from "../../auto-reply/types.js";
export type NormalizedOutboundPayload = {
text: string;
mediaUrls: string[];
};
export type OutboundPayloadJson = {
text: string;
mediaUrl: string | null;
mediaUrls?: string[];
};
export function normalizeOutboundPayloads(
payloads: ReplyPayload[],
): NormalizedOutboundPayload[] {
return payloads
.map((payload) => ({
text: payload.text ?? "",
mediaUrls:
payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []),
}))
.filter((payload) => payload.text || payload.mediaUrls.length > 0);
}
export function normalizeOutboundPayloadsForJson(
payloads: ReplyPayload[],
): OutboundPayloadJson[] {
return payloads.map((payload) => ({
text: payload.text ?? "",
mediaUrl: payload.mediaUrl ?? null,
mediaUrls:
payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : undefined),
}));
}
export function formatOutboundPayloadLog(
payload: NormalizedOutboundPayload,
): string {
const lines: string[] = [];
if (payload.text) lines.push(payload.text.trimEnd());
for (const url of payload.mediaUrls) lines.push(`MEDIA:${url}`);
return lines.join("\n");
}