From 4086a666ae55d8ca4b7468260eb203a07c462334 Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Thu, 24 Nov 2022 00:48:00 +0530 Subject: [PATCH] fix: add location query variable (#5540) * fix: add location query variable * chore: remove logs * fix: remove required location * fix: make locations option * fix: get location * Update packages/prisma/zod/custom/eventtype.ts Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Co-authored-by: alannnc --- apps/web/pages/event-types/index.tsx | 1 + packages/prisma/zod/custom/eventtype.ts | 3 ++- .../trpc/server/routers/viewer/eventTypes.tsx | 1 + .../modules/event-types/CreateEventType.tsx | 26 ++++++++++++++++++- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/apps/web/pages/event-types/index.tsx b/apps/web/pages/event-types/index.tsx index 4c6c428106..e33931ae7d 100644 --- a/apps/web/pages/event-types/index.tsx +++ b/apps/web/pages/event-types/index.tsx @@ -186,6 +186,7 @@ export const EventTypeList = ({ group, groupIndex, readOnly, types }: EventTypeL length: type.length, type: type.schedulingType, teamId: group.teamId, + locations: encodeURIComponent(JSON.stringify(type.locations)), }; if (!group.teamId) { delete query.teamId; diff --git a/packages/prisma/zod/custom/eventtype.ts b/packages/prisma/zod/custom/eventtype.ts index cbdca6e596..884fc8cc8f 100755 --- a/packages/prisma/zod/custom/eventtype.ts +++ b/packages/prisma/zod/custom/eventtype.ts @@ -9,8 +9,9 @@ export const createEventTypeInput = _EventTypeModel teamId: true, schedulingType: true, hidden: true, + locations: true }) - .partial({ hidden: true }) + .partial({ hidden: true, locations: true }) .refine((data) => (data.teamId ? data.teamId && data.schedulingType : true), { path: ["schedulingType"], message: "You must select a scheduling type for team events", diff --git a/packages/trpc/server/routers/viewer/eventTypes.tsx b/packages/trpc/server/routers/viewer/eventTypes.tsx index 93a658adc1..0aa043eda3 100644 --- a/packages/trpc/server/routers/viewer/eventTypes.tsx +++ b/packages/trpc/server/routers/viewer/eventTypes.tsx @@ -156,6 +156,7 @@ export const eventTypesRouter = router({ // Position is required by lodash to sort on it. Don't remove it, TS won't complain but it would silently break reordering position: true, hashedLink: true, + locations: true, destinationCalendar: true, team: { select: { diff --git a/packages/ui/v2/modules/event-types/CreateEventType.tsx b/packages/ui/v2/modules/event-types/CreateEventType.tsx index 20fc0059a1..d3aedd23b4 100644 --- a/packages/ui/v2/modules/event-types/CreateEventType.tsx +++ b/packages/ui/v2/modules/event-types/CreateEventType.tsx @@ -52,6 +52,15 @@ interface CreateEventTypeBtnProps { options: EventTypeParent[]; } +const isValidJSONString = (str: string) => { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; +}; + export default function CreateEventTypeButton(props: CreateEventTypeBtnProps) { const { t } = useLocale(); const router = useRouter(); @@ -82,7 +91,13 @@ export default function CreateEventTypeButton(props: CreateEventTypeBtnProps) { ? router.query.description : ""; const slug: string = typeof router.query.slug === "string" && router.query.slug ? router.query.slug : ""; + const locations = + typeof router.query.locations === "string" && + isValidJSONString(decodeURIComponent(router.query.locations)) + ? JSON.parse(decodeURIComponent(router.query.locations)) + : []; + setValue("locations", locations); setValue("title", title); setValue("length", length); setValue("description", description); @@ -137,7 +152,16 @@ export default function CreateEventTypeButton(props: CreateEventTypeBtnProps) { return ( + clearQueryParamsOnClose={[ + "eventPage", + "teamId", + "type", + "description", + "title", + "length", + "slug", + "locations", + ]}> {!hasTeams || props.isIndividualTeam ? (