fix: modal logic for assignment reminder (#15488)

* fix: modal logic for assignemtn reminder

* Fix: joe feedback

---------

Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
This commit is contained in:
sean-brydon
2024-06-21 07:48:14 +00:00
committed by GitHub
co-authored by Joe Au-Yeung
parent ffe03be018
commit c958b6017a
@@ -24,6 +24,7 @@ import { HttpError } from "@calcom/lib/http-error";
import { telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
import type { Prisma } from "@calcom/prisma/client";
import { SchedulingType } from "@calcom/prisma/enums";
import type { customInputSchema, EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils";
import { eventTypeBookingFields } from "@calcom/prisma/zod-utils";
import type { RouterOutputs } from "@calcom/trpc/react";
@@ -205,30 +206,6 @@ const EventTypePage = (props: EventTypeSetupProps) => {
const router = useRouter();
useEffect(() => {
const handleRouteChange = (url: string) => {
const paths = url.split("/");
if (
!!team &&
eventType.hosts.length === 0 &&
!leaveWithoutAssigningHosts.current &&
(url === "/event-types" || paths[1] !== "event-types")
) {
setIsOpenAssignmentWarnDialog(true);
setPendingRoute(url);
router.events.emit(
"routeChangeError",
new Error(`Aborted route change to ${url} because none was assigned to team event`)
);
throw "Aborted";
}
};
router.events.on("routeChangeStart", handleRouteChange);
return () => {
router.events.off("routeChangeStart", handleRouteChange);
};
}, [router]);
const [periodDates] = useState<{ startDate: Date; endDate: Date }>({
startDate: new Date(eventType.periodStartDate || Date.now()),
endDate: new Date(eventType.periodEndDate || Date.now()),
@@ -420,6 +397,41 @@ const EventTypePage = (props: EventTypeSetupProps) => {
formState: { isDirty: isFormDirty, dirtyFields },
} = formMethods;
useEffect(() => {
const handleRouteChange = (url: string) => {
const paths = url.split("/");
// Check if event is managed event type - skip if there is assigned users
const assignedUsers = eventType.children;
const isManagedEventType = eventType.schedulingType === SchedulingType.MANAGED;
if (eventType.assignAllTeamMembers) {
return;
} else if (isManagedEventType && assignedUsers.length > 0) {
return;
}
const hosts = eventType.hosts;
if (
!leaveWithoutAssigningHosts.current &&
!!team &&
(hosts.length === 0 || assignedUsers.length === 0) &&
(url === "/event-types" || paths[1] !== "event-types")
) {
setIsOpenAssignmentWarnDialog(true);
setPendingRoute(url);
router.events.emit(
"routeChangeError",
new Error(`Aborted route change to ${url} because none was assigned to team event`)
);
throw "Aborted";
}
};
router.events.on("routeChangeStart", handleRouteChange);
return () => {
router.events.off("routeChangeStart", handleRouteChange);
};
}, [router]);
const appsMetadata = formMethods.getValues("metadata")?.apps;
const availability = formMethods.watch("availability");
let numberOfActiveApps = 0;