Files

25 lines
1.1 KiB
TypeScript

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);
}