From 4404699fa6c9c318402b0451dd21083a57db6e04 Mon Sep 17 00:00:00 2001 From: Deepak gupta <91896859+guptadeepak8@users.noreply.github.com> Date: Tue, 8 Jul 2025 00:23:38 +0530 Subject: [PATCH] fix: improve redirect parameter handling for success page (#20764) * improve redirect parameter * test --------- Co-authored-by: Kartik Saini <41051387+kart1ka@users.noreply.github.com> --- packages/lib/bookingSuccessRedirect.test.ts | 27 +++++++++++++++++++++ packages/lib/bookingSuccessRedirect.ts | 10 ++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 packages/lib/bookingSuccessRedirect.test.ts diff --git a/packages/lib/bookingSuccessRedirect.test.ts b/packages/lib/bookingSuccessRedirect.test.ts new file mode 100644 index 0000000000..d406d8bdfc --- /dev/null +++ b/packages/lib/bookingSuccessRedirect.test.ts @@ -0,0 +1,27 @@ +import { describe, expect, it } from "vitest"; + +import { getNewSearchParams } from "./bookingSuccessRedirect"; + +describe("getNewSearchParams", () => { + it("should remove 'embed' param when isEmbed is true", () => { + const searchParams = new URLSearchParams({ embed: "true", foo: "bar" }); + const query = { bookingId: "123" }; + + const result = getNewSearchParams({ query, searchParams, isEmbed: true }); + + expect(result.get("embed")).toBeNull(); + expect(result.get("foo")).toBe("bar"); + expect(result.get("bookingId")).toBe("123"); + }); + + it("should keep 'embed' param when isEmbed is false", () => { + const searchParams = new URLSearchParams({ embed: "true", foo: "bar" }); + const query = { bookingId: "456" }; + + const result = getNewSearchParams({ query, searchParams, isEmbed: false }); + + expect(result.get("embed")).toBe("true"); + expect(result.get("foo")).toBe("bar"); + expect(result.get("bookingId")).toBe("456"); + }); +}); diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index c1e0dcb1d0..7142d89caa 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -10,12 +10,17 @@ import { navigateInTopWindow } from "@calcom/lib/navigateInTopWindow"; import { getSafe } from "./getSafe"; -function getNewSearchParams(args: { +export function getNewSearchParams(args: { query: Record; searchParams?: URLSearchParams; + isEmbed?: boolean; }) { - const { query, searchParams } = args; + const { query, searchParams, isEmbed } = args; const newSearchParams = new URLSearchParams(searchParams); + + if (isEmbed) { + newSearchParams.delete("embed"); + } Object.entries(query).forEach(([key, value]) => { if (value === null || value === undefined) { return; @@ -184,6 +189,7 @@ export const useBookingSuccessRedirect = () => { query: { ...query, ...bookingExtraParams, + isEmbed, }, searchParams: new URLSearchParams(searchParams.toString()), });