diff --git a/apps/web/modules/bookings/views/booking-dry-run-success-view.tsx b/apps/web/modules/bookings/views/booking-dry-run-success-view.tsx index 6c3228752b..3e319b5250 100644 --- a/apps/web/modules/bookings/views/booking-dry-run-success-view.tsx +++ b/apps/web/modules/bookings/views/booking-dry-run-success-view.tsx @@ -42,7 +42,9 @@ export default function DryRunSuccessful() {
-

{t("booking_dry_run_successful")}

+

+ {t("booking_dry_run_successful")} +

{t("booking_dry_run_successful_description")}

{/*
diff --git a/apps/web/pages/router/index.tsx b/apps/web/pages/router/index.tsx index b9b9956292..5821c6243c 100644 --- a/apps/web/pages/router/index.tsx +++ b/apps/web/pages/router/index.tsx @@ -4,6 +4,8 @@ import Head from "next/head"; import type { inferSSRProps } from "@calcom/types/inferSSRProps"; +import PageWrapper from "@components/PageWrapper"; + import { getServerSideProps } from "../../server/lib/router/getServerSideProps"; export default function Router({ form, message }: inferSSRProps) { @@ -23,4 +25,6 @@ export default function Router({ form, message }: inferSSRProps {
-
{t("dry_run_mode_active")}
+
+ {t("dry_run_mode_active")} +
); diff --git a/packages/features/bookings/Booker/components/hooks/useSlots.ts b/packages/features/bookings/Booker/components/hooks/useSlots.ts index f7a30442bc..508d5cac85 100644 --- a/packages/features/bookings/Booker/components/hooks/useSlots.ts +++ b/packages/features/bookings/Booker/components/hooks/useSlots.ts @@ -4,14 +4,17 @@ import { shallow } from "zustand/shallow"; import dayjs from "@calcom/dayjs"; import { useBookerStore } from "@calcom/features/bookings/Booker/store"; import { useSlotReservationId } from "@calcom/features/bookings/Booker/useSlotReservationId"; +import { isBookingDryRun } from "@calcom/features/bookings/Booker/utils/isBookingDryRun"; import type { BookerEvent } from "@calcom/features/bookings/types"; import { MINUTES_TO_BOOK } from "@calcom/lib/constants"; +import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams"; import { trpc } from "@calcom/trpc"; export type UseSlotsReturnType = ReturnType; export const useSlots = (event: { data?: Pick | null }) => { const selectedDuration = useBookerStore((state) => state.selectedDuration); + const searchParams = useCompatSearchParams(); const [selectedTimeslot, setSelectedTimeslot] = useBookerStore( (state) => [state.selectedTimeslot, state.setSelectedTimeslot], shallow @@ -45,6 +48,7 @@ export const useSlots = (event: { data?: Pick | nu .utc() .add(selectedDuration || event.data.length, "minutes") .format(), + _isDryRun: isBookingDryRun(searchParams), }); } }; diff --git a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts index 62e3a263ba..9ee0ba5259 100644 --- a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts +++ b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts @@ -21,7 +21,7 @@ interface ReserveSlotOptions { export const reserveSlotHandler = async ({ ctx, input }: ReserveSlotOptions) => { const { prisma, req, res } = ctx; const uid = req?.cookies?.uid || uuid(); - const { slotUtcStartDate, slotUtcEndDate, eventTypeId, bookingUid } = input; + const { slotUtcStartDate, slotUtcEndDate, eventTypeId, bookingUid, _isDryRun } = input; const releaseAt = dayjs.utc().add(parseInt(MINUTES_TO_BOOK), "minutes").format(); const eventType = await prisma.eventType.findUnique({ where: { id: eventTypeId }, @@ -54,7 +54,7 @@ export const reserveSlotHandler = async ({ ctx, input }: ReserveSlotOptions) => } } - if (eventType && shouldReserveSlot) { + if (eventType && shouldReserveSlot && !_isDryRun) { try { await Promise.all( eventType.users.map((user) => diff --git a/packages/trpc/server/routers/viewer/slots/types.ts b/packages/trpc/server/routers/viewer/slots/types.ts index 0d82f05497..3741303ddb 100644 --- a/packages/trpc/server/routers/viewer/slots/types.ts +++ b/packages/trpc/server/routers/viewer/slots/types.ts @@ -56,6 +56,7 @@ export const reserveSlotSchema = z // endTime ISOString slotUtcEndDate: z.string(), bookingUid: z.string().optional(), + _isDryRun: z.boolean().optional(), }) .refine( (data) => !!data.eventTypeId || !!data.slotUtcStartDate || !!data.slotUtcEndDate,