import { useEffect, useState } from "react"; import { useBookerStore } from "@calcom/features/bookings/Booker/store"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { parseRecurringDates } from "@calcom/lib/parse-dates"; import { getRecurringFreq } from "@calcom/lib/recurringStrings"; import { Tooltip, Alert } from "@calcom/ui"; import { Input } from "@calcom/ui"; import { useTimePreferences } from "../../lib"; import type { PublicEvent } from "../../types"; export const EventOccurences = ({ event }: { event: PublicEvent }) => { const maxOccurences = event.recurringEvent?.count || null; const { t, i18n } = useLocale(); const [setRecurringEventCount, recurringEventCount, setOccurenceCount, occurenceCount] = useBookerStore( (state) => [ state.setRecurringEventCount, state.recurringEventCount, state.setOccurenceCount, state.occurenceCount, ] ); const selectedTimeslot = useBookerStore((state) => state.selectedTimeslot); const bookerState = useBookerStore((state) => state.state); const { timezone, timeFormat } = useTimePreferences(); const [warning, setWarning] = useState(false); // Set initial value in booker store. useEffect(() => { if (!event.recurringEvent?.count) return; setOccurenceCount(occurenceCount || event.recurringEvent.count); setRecurringEventCount(recurringEventCount || event.recurringEvent.count); if (occurenceCount && (occurenceCount > event.recurringEvent.count || occurenceCount < 1)) setWarning(true); }, [setRecurringEventCount, event.recurringEvent, recurringEventCount, setOccurenceCount, occurenceCount]); if (!event.recurringEvent) return null; if (bookerState === "booking" && recurringEventCount && selectedTimeslot) { const [recurringStrings] = parseRecurringDates( { startDate: selectedTimeslot, timeZone: timezone, recurringEvent: event.recurringEvent, recurringCount: recurringEventCount, selectedTimeFormat: timeFormat, }, i18n.language ); return ( <> {recurringStrings.slice(0, 5).map((timeFormatted, key) => (
{timeFormatted}
))} {recurringStrings.length > 5 && ({timeFormatted}
))}>+ {t("plus_more", { count: recurringStrings.length - 5 })}