diff --git a/components/booking/AvailableTimes.tsx b/components/booking/AvailableTimes.tsx index 2e1f5f3ed4..6f4e413033 100644 --- a/components/booking/AvailableTimes.tsx +++ b/components/booking/AvailableTimes.tsx @@ -1,7 +1,7 @@ import dayjs from "dayjs"; import isBetween from "dayjs/plugin/isBetween"; dayjs.extend(isBetween); -import { useEffect, useState } from "react"; +import { useEffect, useState, useMemo } from "react"; import getSlots from "../../lib/slots"; import Link from "next/link"; import { timeZone } from "../../lib/clock"; @@ -14,14 +14,18 @@ const AvailableTimes = (props) => { const [loaded, setLoaded] = useState(false); const [error, setError] = useState(false); - const times = getSlots({ - calendarTimeZone: props.user.timeZone, - selectedTimeZone: timeZone(), - eventLength: props.eventType.length, - selectedDate: props.date, - dayStartTime: props.user.startTime, - dayEndTime: props.user.endTime, - }); + const times = useMemo(() => { + const slots = getSlots({ + calendarTimeZone: props.user.timeZone, + selectedTimeZone: timeZone(), + eventLength: props.eventType.length, + selectedDate: props.date, + dayStartTime: props.user.startTime, + dayEndTime: props.user.endTime, + }); + + return slots; + }, [props.date]); const handleAvailableSlots = (busyTimes: []) => { // Check for conflicts @@ -80,6 +84,7 @@ const AvailableTimes = (props) => { {!error && loaded && + times.length > 0 && times.map((time) => (