fix: Assignment reminder modal appears when deleting a team event type (#15544)

* fix: Assignment reminder modal appears when deleting a team event type

* update

* Update EventTypeSingleLayout.tsx

* Update event-types-single-view.tsx

* update

* Early return https://handbook.cal.com/engineering/best-practices/prefer-early-returns

---------

Co-authored-by: Keith Williams <keithwillcode@gmail.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
This commit is contained in:
Anik Dhabal Babu
2024-07-29 09:52:03 +00:00
committed by GitHub
co-authored by Keith Williams Hariom
parent 62dd5ea95b
commit 6e66f7f8f8
2 changed files with 20 additions and 2 deletions
@@ -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<DialogProps, "open" | "onOpenChange">) {
onDelete,
}: {
isManagedEvent: string;
eventTypeId: number;
onDelete: () => void;
} & Pick<DialogProps, "open" | "onOpenChange">) {
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}
/>
<EventTypeEmbedDialog />
@@ -230,6 +230,7 @@ const EventTypePage = (props: EventTypeSetupProps & { allActiveWorkflows?: Workf
const [isOpenAssignmentWarnDialog, setIsOpenAssignmentWarnDialog] = useState<boolean>(false);
const [pendingRoute, setPendingRoute] = useState("");
const leaveWithoutAssigningHosts = useRef(false);
const isTeamEventTypeDeleted = useRef(false);
const [animationParentRef] = useAutoAnimate<HTMLDivElement>();
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}>
<Form
form={formMethods}
id="event-type-form"