import type { LoginPreviewResponse } from "../types/visitorContext"; export type RegistrationBaseFields = | "name_email" | "email_only" | "name_email_phone" | "anonymous_name" | "anonymous"; export function registrationRequiresEmail(base: RegistrationBaseFields | string): boolean { return base === "name_email" || base === "email_only" || base === "name_email_phone"; } export function useEventRegistrationSettings(event: LoginPreviewResponse | null | undefined) { const s = event?.settings; const registrationOpen = s?.registrationOpen !== false; const deadline = s?.registrationDeadline ? new Date(s.registrationDeadline) : null; const deadlinePassed = deadline ? deadline.getTime() <= Date.now() : false; const newRegistrationBlocked = !registrationOpen || deadlinePassed; const authenticationType = (s?.authenticationType || "otp_email") as | "otp_email" | "link_email" | "none"; const registrationBaseFields = (s?.registrationBaseFields || "name_email") as RegistrationBaseFields; const registrationMode = s?.registrationMode || "Open"; const enableFeedback = s?.enableFeedback !== false; const enableRatings = s?.enableRatings === true; const primaryCtaLabel = authenticationType === "otp_email" ? "Send OTP" : authenticationType === "link_email" ? "Email me a link" : "Continue"; return { settings: s, registrationOpen, deadlinePassed, newRegistrationBlocked, authenticationType, registrationBaseFields, requiresEmailOnLogin: authenticationType !== "none" || registrationRequiresEmail(registrationBaseFields), registrationMode, enableFeedback, enableRatings, primaryCtaLabel, }; }