diff --git a/apps/web/components/eventtype/EventTypeSingleLayout.tsx b/apps/web/components/eventtype/EventTypeSingleLayout.tsx index fa792584b3..362a4001c8 100644 --- a/apps/web/components/eventtype/EventTypeSingleLayout.tsx +++ b/apps/web/components/eventtype/EventTypeSingleLayout.tsx @@ -53,6 +53,7 @@ type Props = { isUserOrganizationAdmin: boolean; bookerUrl: string; activeWebhooksNumber: number; + onDelete: () => void; }; type getNavigationProps = { @@ -117,7 +118,12 @@ function DeleteDialog({ eventTypeId, open, onOpenChange, -}: { isManagedEvent: string; eventTypeId: number } & Pick) { + onDelete, +}: { + isManagedEvent: string; + eventTypeId: number; + onDelete: () => void; +} & Pick) { const utils = trpc.useUtils(); const { t } = useLocale(); const router = useRouter(); @@ -125,6 +131,7 @@ function DeleteDialog({ onSuccess: async () => { await utils.viewer.eventTypes.invalidate(); showToast(t("event_type_deleted_successfully"), "success"); + onDelete(); router.push("/event-types"); onOpenChange?.(false); }, @@ -181,6 +188,7 @@ function EventTypeSingleLayout({ isUserOrganizationAdmin, bookerUrl, activeWebhooksNumber, + onDelete, }: Props) { const { t } = useLocale(); const eventTypesLockedByOrg = eventType.team?.parent?.organizationSettings?.lockEventTypeCreationForUsers; @@ -510,6 +518,7 @@ function EventTypeSingleLayout({ isManagedEvent={isManagedEvent} open={deleteDialogOpen} onOpenChange={setDeleteDialogOpen} + onDelete={onDelete} /> diff --git a/apps/web/modules/event-types/views/event-types-single-view.tsx b/apps/web/modules/event-types/views/event-types-single-view.tsx index a6138db64b..5e6ea48098 100644 --- a/apps/web/modules/event-types/views/event-types-single-view.tsx +++ b/apps/web/modules/event-types/views/event-types-single-view.tsx @@ -230,6 +230,7 @@ const EventTypePage = (props: EventTypeSetupProps & { allActiveWorkflows?: Workf const [isOpenAssignmentWarnDialog, setIsOpenAssignmentWarnDialog] = useState(false); const [pendingRoute, setPendingRoute] = useState(""); const leaveWithoutAssigningHosts = useRef(false); + const isTeamEventTypeDeleted = useRef(false); const [animationParentRef] = useAutoAnimate(); const updateMutation = trpc.viewer.eventTypes.update.useMutation({ onSuccess: async () => { @@ -404,10 +405,17 @@ const EventTypePage = (props: EventTypeSetupProps & { allActiveWorkflows?: Workf formState: { isDirty: isFormDirty, dirtyFields }, } = formMethods; + const onDelete = () => { + isTeamEventTypeDeleted.current = true; + }; + useEffect(() => { const handleRouteChange = (url: string) => { const paths = url.split("/"); + // If the event-type is deleted, we can't show the empty assignment warning + if (isTeamEventTypeDeleted.current) return; + if ( !!team && !leaveWithoutAssigningHosts.current && @@ -716,7 +724,8 @@ const EventTypePage = (props: EventTypeSetupProps & { allActiveWorkflows?: Workf disableBorder={true} currentUserMembership={currentUserMembership} bookerUrl={eventType.bookerUrl} - isUserOrganizationAdmin={props.isUserOrganizationAdmin}> + isUserOrganizationAdmin={props.isUserOrganizationAdmin} + onDelete={onDelete}>