From 293dd1a1402fbc0748dffd5619a1b1aacaea9d60 Mon Sep 17 00:00:00 2001 From: Somay Chauhan Date: Wed, 13 Aug 2025 18:33:35 +0530 Subject: [PATCH] Fix: lock timezone on booking page breaks atoms (#23060) * fix: eventTypeSettings atom crashed on enabling `Lock timezone on booking page` * add changelog --- .changeset/deep-owls-hang.md | 5 +++ .../tabs/advanced/EventAdvancedTab.tsx | 9 ++++- .../wrappers/EventTypePlatformWrapper.tsx | 39 ++++++++++--------- 3 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 .changeset/deep-owls-hang.md diff --git a/.changeset/deep-owls-hang.md b/.changeset/deep-owls-hang.md new file mode 100644 index 0000000000..2910210fd6 --- /dev/null +++ b/.changeset/deep-owls-hang.md @@ -0,0 +1,5 @@ +--- +"@calcom/atoms": minor +--- + +fix: EventTypeSettings Atom crashes on enabling `Lock timezone on booking` in advanced tab diff --git a/packages/features/eventtypes/components/tabs/advanced/EventAdvancedTab.tsx b/packages/features/eventtypes/components/tabs/advanced/EventAdvancedTab.tsx index dced1ca619..b88bbdaec7 100644 --- a/packages/features/eventtypes/components/tabs/advanced/EventAdvancedTab.tsx +++ b/packages/features/eventtypes/components/tabs/advanced/EventAdvancedTab.tsx @@ -1,4 +1,4 @@ -import { useState, Suspense } from "react"; +import { useState, Suspense, useMemo } from "react"; import type { Dispatch, SetStateAction } from "react"; import { Controller, useFormContext } from "react-hook-form"; import type { z } from "zod"; @@ -10,9 +10,10 @@ import { SelectedCalendarSettingsScope, SelectedCalendarsSettingsWebWrapperSkeleton, } from "@calcom/atoms/selected-calendars/wrappers/SelectedCalendarsSettingsWebWrapper"; +import { Timezone as PlatformTimzoneSelect } from "@calcom/atoms/timezone"; import getLocationsOptionsForSelect from "@calcom/features/bookings/lib/getLocationOptionsForSelect"; import DestinationCalendarSelector from "@calcom/features/calendars/DestinationCalendarSelector"; -import { TimezoneSelect } from "@calcom/features/components/timezone-select"; +import { TimezoneSelect as WebTimezoneSelect } from "@calcom/features/components/timezone-select"; import useLockedFieldsManager from "@calcom/features/ee/managed-event-types/hooks/useLockedFieldsManager"; import { allowDisablingAttendeeConfirmationEmails, @@ -565,6 +566,10 @@ export const EventAdvancedTab = ({ userEmail = removePlatformClientIdFromEmail(userEmail, platformContext.clientId); } + const TimezoneSelect = useMemo(() => { + return isPlatform ? PlatformTimzoneSelect : WebTimezoneSelect; + }, [isPlatform]); + return (
void; onError?: (error: Error) => void }>({}); - const handleFormSubmit = useCallback((customCallbacks?: { onSuccess?: () => void; onError?: (error: Error) => void }) => { - if (customCallbacks) { - callbacksRef.current = customCallbacks; - } + const handleFormSubmit = useCallback( + (customCallbacks?: { onSuccess?: () => void; onError?: (error: Error) => void }) => { + if (customCallbacks) { + callbacksRef.current = customCallbacks; + } - if (saveButtonRef.current) { - saveButtonRef.current.click(); - } else { - form.handleSubmit((data) => { - try { - handleSubmit(data); - customCallbacks?.onSuccess?.(); - } catch (error) { - customCallbacks?.onError?.(error as Error); - } - })(); - } - }, [handleSubmit, form]); + if (saveButtonRef.current) { + saveButtonRef.current.click(); + } else { + form.handleSubmit((data) => { + try { + handleSubmit(data); + customCallbacks?.onSuccess?.(); + } catch (error) { + customCallbacks?.onError?.(error as Error); + } + })(); + } + }, + [handleSubmit, form] + ); const validateForm = useCallback(async () => { const isValid = await form.trigger();