Skip to content

Commit c958b60

Browse files
sean-brydonjoeauyeung
andauthoredJun 21, 2024··
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>
1 parent ffe03be commit c958b60

File tree

1 file changed

+36
-24
lines changed

1 file changed

+36
-24
lines changed
 

‎apps/web/modules/event-types/views/event-types-single-view.tsx

+36-24
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { HttpError } from "@calcom/lib/http-error";
2424
import { telemetryEventTypes, useTelemetry } from "@calcom/lib/telemetry";
2525
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
2626
import type { Prisma } from "@calcom/prisma/client";
27+
import { SchedulingType } from "@calcom/prisma/enums";
2728
import type { customInputSchema, EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils";
2829
import { eventTypeBookingFields } from "@calcom/prisma/zod-utils";
2930
import type { RouterOutputs } from "@calcom/trpc/react";
@@ -205,30 +206,6 @@ const EventTypePage = (props: EventTypeSetupProps) => {
205206

206207
const router = useRouter();
207208

208-
useEffect(() => {
209-
const handleRouteChange = (url: string) => {
210-
const paths = url.split("/");
211-
if (
212-
!!team &&
213-
eventType.hosts.length === 0 &&
214-
!leaveWithoutAssigningHosts.current &&
215-
(url === "/event-types" || paths[1] !== "event-types")
216-
) {
217-
setIsOpenAssignmentWarnDialog(true);
218-
setPendingRoute(url);
219-
router.events.emit(
220-
"routeChangeError",
221-
new Error(`Aborted route change to ${url} because none was assigned to team event`)
222-
);
223-
throw "Aborted";
224-
}
225-
};
226-
router.events.on("routeChangeStart", handleRouteChange);
227-
return () => {
228-
router.events.off("routeChangeStart", handleRouteChange);
229-
};
230-
}, [router]);
231-
232209
const [periodDates] = useState<{ startDate: Date; endDate: Date }>({
233210
startDate: new Date(eventType.periodStartDate || Date.now()),
234211
endDate: new Date(eventType.periodEndDate || Date.now()),
@@ -420,6 +397,41 @@ const EventTypePage = (props: EventTypeSetupProps) => {
420397
formState: { isDirty: isFormDirty, dirtyFields },
421398
} = formMethods;
422399

400+
useEffect(() => {
401+
const handleRouteChange = (url: string) => {
402+
const paths = url.split("/");
403+
404+
// Check if event is managed event type - skip if there is assigned users
405+
const assignedUsers = eventType.children;
406+
const isManagedEventType = eventType.schedulingType === SchedulingType.MANAGED;
407+
if (eventType.assignAllTeamMembers) {
408+
return;
409+
} else if (isManagedEventType && assignedUsers.length > 0) {
410+
return;
411+
}
412+
413+
const hosts = eventType.hosts;
414+
if (
415+
!leaveWithoutAssigningHosts.current &&
416+
!!team &&
417+
(hosts.length === 0 || assignedUsers.length === 0) &&
418+
(url === "/event-types" || paths[1] !== "event-types")
419+
) {
420+
setIsOpenAssignmentWarnDialog(true);
421+
setPendingRoute(url);
422+
router.events.emit(
423+
"routeChangeError",
424+
new Error(`Aborted route change to ${url} because none was assigned to team event`)
425+
);
426+
throw "Aborted";
427+
}
428+
};
429+
router.events.on("routeChangeStart", handleRouteChange);
430+
return () => {
431+
router.events.off("routeChangeStart", handleRouteChange);
432+
};
433+
}, [router]);
434+
423435
const appsMetadata = formMethods.getValues("metadata")?.apps;
424436
const availability = formMethods.watch("availability");
425437
let numberOfActiveApps = 0;

0 commit comments

Comments
 (0)
Please sign in to comment.