ultisuite-client/lib/resolve-email-calendar-invitation.ts
2026-05-15 17:40:17 +02:00

35 lines
982 B
TypeScript

import type { Email } from "@/lib/email-data"
import {
extractEmbeddedIcsFromHtml,
parseCalendarInvitationFromIcs,
type ParsedCalendarInvitation,
} from "@/lib/calendar-invitation"
function gatherIcsCandidates(email: Email): string[] {
const out: string[] = []
if (email.calendarInvitation?.ics) {
out.push(email.calendarInvitation.ics)
}
for (const a of email.attachments ?? []) {
if (a.name.toLowerCase().endsWith(".ics") && a.inlineText) {
out.push(a.inlineText)
}
}
if (email.body) {
const embedded = extractEmbeddedIcsFromHtml(email.body)
if (embedded) out.push(embedded)
}
return out
}
/** Premier bloc ICS exploitable (metadata, pièce jointe ou texte/HTML inline). */
export function resolveParsedCalendarInvitation(
email: Email
): ParsedCalendarInvitation | null {
for (const ics of gatherIcsCandidates(email)) {
const parsed = parseCalendarInvitationFromIcs(ics)
if (parsed) return parsed
}
return null
}