import dayjs, { Dayjs } from "dayjs"; import utc from "dayjs/plugin/utc"; import { useEffect, useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { QueryCell } from "@lib/QueryCell"; import { inferQueryOutput, trpc } from "@lib/trpc"; import Loader from "@components/Loader"; import Shell from "@components/Shell"; dayjs.extend(utc); type User = inferQueryOutput<"viewer.me">; const AvailabilityView = ({ user }: { user: User }) => { const { t } = useLocale(); const [loading, setLoading] = useState(true); const [availability, setAvailability] = useState<{ end: string; start: string }[]>([]); const [selectedDate, setSelectedDate] = useState(dayjs()); function convertMinsToHrsMins(mins: number) { const h = Math.floor(mins / 60); const m = mins % 60; const hs = h < 10 ? "0" + h : h; const ms = m < 10 ? "0" + m : m; return `${hs}:${ms}`; } useEffect(() => { const fetchAvailability = (date: Dayjs) => { const dateFrom = date.startOf("day").utc().format(); const dateTo = date.endOf("day").utc().format(); setLoading(true); fetch(`/api/availability/${user.username}?dateFrom=${dateFrom}&dateTo=${dateTo}`) .then((res) => { return res.json(); }) .then((availableIntervals) => { setAvailability(availableIntervals.busy); }) .catch((e) => { console.error(e); }) .finally(() => { setLoading(false); }); }; fetchAvailability(selectedDate); }, [user.username, selectedDate]); return (