24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
import type { BookingRequest, Event, MeetingSetting } from "@/payload-types";
|
|
import { canJoinMeeting, combineDateAndTime, getMeetingStatus, type MeetingStatus } from "@/lib/meeting/status";
|
|
|
|
export function getBookingMeetingStatus(booking: BookingRequest, settings: MeetingSetting): MeetingStatus | null {
|
|
const event = typeof booking.linkedEvent === "object" ? (booking.linkedEvent as Event) : null;
|
|
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: BookingRequest, settings: MeetingSetting): boolean {
|
|
const status = getBookingMeetingStatus(booking, settings);
|
|
return status !== null && canJoinMeeting(status);
|
|
}
|