import type { MeetingSetting } from "@/payload-types"; import type { CustomerBooking } from "./customerView"; import { canJoinMeeting, combineDateAndTime, getMeetingStatus, type MeetingStatus } from "@/lib/meeting/status"; export function getBookingMeetingStatus(booking: CustomerBooking, settings: MeetingSetting): MeetingStatus | null { const event = booking.linkedEvent; if (booking.status !== "confirmed" || booking.appointmentType !== "online" || !event?.isOnline) return null; const start = combineDateAndTime(booking.date, booking.startTime); const end = booking.endTime ? combineDateAndTime(booking.date, booking.endTime) : new Date(start.getTime() + 60 * 60_000); return getMeetingStatus({ start, end, joinWindowMinutes: settings.participantJoinWindowMinutes, closeAfterMinutes: settings.meetingCloseAfterMinutes, }); } export function canJoinBookingMeeting(booking: CustomerBooking, settings: MeetingSetting): boolean { const status = getBookingMeetingStatus(booking, settings); return status !== null && canJoinMeeting(status); }