From 3952c0dc485f535a7611cbd7a6f01f5254f9e39f Mon Sep 17 00:00:00 2001 From: Udit Takkar Date: Wed, 16 Nov 2022 00:15:14 +0530 Subject: [PATCH 1/7] fix: add location query variable --- apps/web/pages/event-types/index.tsx | 1 + packages/prisma/zod/custom/eventtype.ts | 1 + .../trpc/server/routers/viewer/eventTypes.tsx | 3 ++- .../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 5352f0cb9cae9e..bb68421d756f6e 100644 --- a/apps/web/pages/event-types/index.tsx +++ b/apps/web/pages/event-types/index.tsx @@ -180,6 +180,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 cbdca6e5969b34..2ae8349f9a5356 100755 --- a/packages/prisma/zod/custom/eventtype.ts +++ b/packages/prisma/zod/custom/eventtype.ts @@ -9,6 +9,7 @@ export const createEventTypeInput = _EventTypeModel teamId: true, schedulingType: true, hidden: true, + locations:true }) .partial({ hidden: true }) .refine((data) => (data.teamId ? data.teamId && data.schedulingType : true), { diff --git a/packages/trpc/server/routers/viewer/eventTypes.tsx b/packages/trpc/server/routers/viewer/eventTypes.tsx index 93a658adc1366b..6c1b47b755e7e6 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: { @@ -384,7 +385,7 @@ export const eventTypesRouter = router({ }; data.schedulingType = schedulingType; } - + console.log("DATA_AJF", data); try { const eventType = await ctx.prisma.eventType.create({ data }); return { eventType }; diff --git a/packages/ui/v2/modules/event-types/CreateEventType.tsx b/packages/ui/v2/modules/event-types/CreateEventType.tsx index 4871487e7f7160..988c758997aff5 100644 --- a/packages/ui/v2/modules/event-types/CreateEventType.tsx +++ b/packages/ui/v2/modules/event-types/CreateEventType.tsx @@ -46,6 +46,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(); @@ -76,7 +85,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); @@ -131,7 +146,16 @@ export default function CreateEventTypeButton(props: CreateEventTypeBtnProps) { return ( + clearQueryParamsOnClose={[ + "eventPage", + "teamId", + "type", + "description", + "title", + "length", + "slug", + "locations", + ]}> {!hasTeams || props.isIndividualTeam ? (