From f080838855f9bb0ef52ac71ea0fb6a61588e6395 Mon Sep 17 00:00:00 2001 From: Sean Brydon Date: Thu, 26 Oct 2023 10:55:07 +0100 Subject: [PATCH] Add date override to calendar --- .../components/LargeCalendar.tsx | 65 ++++++++++++++----- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/packages/features/troubleshooter/components/LargeCalendar.tsx b/packages/features/troubleshooter/components/LargeCalendar.tsx index ac220c5cf1..8590a7dd1e 100644 --- a/packages/features/troubleshooter/components/LargeCalendar.tsx +++ b/packages/features/troubleshooter/components/LargeCalendar.tsx @@ -4,6 +4,8 @@ import { useMemo } from "react"; import dayjs from "@calcom/dayjs"; import { Calendar } from "@calcom/features/calendars/weeklyview"; import type { CalendarAvailableTimeslots } from "@calcom/features/calendars/weeklyview/types/state"; +import { BookingStatus } from "@calcom/prisma/enums"; +import { trpc } from "@calcom/trpc"; import { useTimePreferences } from "../../bookings/lib/timePreferences"; import { useSchedule } from "../../schedules/lib/use-schedule"; @@ -16,6 +18,18 @@ export const LargeCalendar = ({ extraDays }: { extraDays: number }) => { const { data: session } = useSession(); const date = selectedDate ? dayjs(selectedDate) : dayjs(); + const { data: busyEvents, isLoading } = trpc.viewer.availability.user.useQuery( + { + username: session?.user?.username || "", + dateFrom: date.startOf("day").utc().format(), + dateTo: date.endOf("day").utc().format(), + withSource: true, + }, + { + enabled: !!session?.user?.username, + } + ); + const { data: schedule } = useSchedule({ username: session?.user.username || "", eventSlug: event?.slug, @@ -46,28 +60,47 @@ export const LargeCalendar = ({ extraDays }: { extraDays: number }) => { return availableTimeslots; }, [schedule, event]); - // const events = useMemo(() => { - // if (!data?.busy) return []; - // return data?.busy.map((event, idx) => { - // return { - // id: idx, - // title: event.title ?? "Busy", - // start: new Date(event.start), - // end: new Date(event.end), - // options: { - // borderColor: "#F97417", - // status: BookingStatus.ACCEPTED, - // }, - // }; - // }); - // }, [data]); + const events = useMemo(() => { + if (!busyEvents?.busy) return []; + + const calendarEvents = busyEvents?.busy.map((event, idx) => { + return { + id: idx, + title: event.title ?? "Busy", + start: new Date(event.start), + end: new Date(event.end), + options: { + borderColor: "#F97417", + status: BookingStatus.ACCEPTED, + }, + }; + }); + + if (busyEvents.dateOverrides) { + for (const date in busyEvents.dateOverrides) { + const dateOverride = busyEvents.dateOverrides[date]; + calendarEvents.push({ + id: calendarEvents.length, + title: "Date Override", + start: new Date(dateOverride.start), + end: new Date(dateOverride.end), + options: { + borderColor: "black", + status: BookingStatus.ACCEPTED, + }, + }); + } + } + + return calendarEvents; + }, [busyEvents]); return (