From e872bf8cc5eda062e96404f8f2ab9d7f5dd88098 Mon Sep 17 00:00:00 2001 From: guptadeepak8 Date: Fri, 18 Apr 2025 11:45:10 +0530 Subject: [PATCH 1/3] fix: improve redirect parameter handling for success page --- packages/lib/bookingSuccessRedirect.test.ts | 18 ++++++++++++++++++ packages/lib/bookingSuccessRedirect.ts | 6 +++++- 2 files changed, 23 insertions(+), 1 deletion(-) 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 00000000000000..fc82d7a03aefe9 --- /dev/null +++ b/packages/lib/bookingSuccessRedirect.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from "vitest"; + +import { filterEmbedParameter } from "./bookingSuccessRedirect"; + +describe("Booking Success Redirect", () => { + it("removes embed parameter and keeps other parameters", () => { + const params = new URLSearchParams(); + params.append("embed", "namespace"); + params.append("param1", "value1"); + params.append("cal.rerouting", "true"); + + const filtered = filterEmbedParameter(params); + + expect(filtered.has("embed")).toBe(false); + expect(filtered.get("param1")).toBe("value1"); + expect(filtered.get("cal.rerouting")).toBe("true"); + }); +}); diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index c1e0dcb1d0aaab..0d1b967ab26c4f 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -149,6 +149,10 @@ export const getBookingRedirectExtraParams = (booking: SuccessRedirectBookingTyp return queryCompatibleParams; }; +export const filterEmbedParameter = (params: URLSearchParams) => { + return new URLSearchParams(Array.from(params.entries()).filter(([key]) => key !== "embed")); +}; + export const useBookingSuccessRedirect = () => { const router = useRouter(); const searchParams = useCompatSearchParams(); @@ -185,7 +189,7 @@ export const useBookingSuccessRedirect = () => { ...query, ...bookingExtraParams, }, - searchParams: new URLSearchParams(searchParams.toString()), + searchParams: filterEmbedParameter(new URLSearchParams(searchParams.toString())), }); newSearchParams.forEach((value, key) => { From a9c9d831afa4e793589c85913f77c6fb352a1679 Mon Sep 17 00:00:00 2001 From: guptadeepak8 Date: Fri, 18 Apr 2025 15:43:58 +0530 Subject: [PATCH 2/3] updated --- packages/lib/bookingSuccessRedirect.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index 0d1b967ab26c4f..a6b536a0906c6d 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -150,7 +150,10 @@ export const getBookingRedirectExtraParams = (booking: SuccessRedirectBookingTyp }; export const filterEmbedParameter = (params: URLSearchParams) => { - return new URLSearchParams(Array.from(params.entries()).filter(([key]) => key !== "embed")); + // Remove the embed parameter if it exists + const filteredParams = new URLSearchParams(params); + filteredParams.delete("embed"); + return filteredParams; }; export const useBookingSuccessRedirect = () => { @@ -189,7 +192,7 @@ export const useBookingSuccessRedirect = () => { ...query, ...bookingExtraParams, }, - searchParams: filterEmbedParameter(new URLSearchParams(searchParams.toString())), + searchParams: filterEmbedParameter(searchParams), }); newSearchParams.forEach((value, key) => { From b0751ea9b22f74ea6b5dbb3da2a4b42096457ce8 Mon Sep 17 00:00:00 2001 From: guptadeepak8 Date: Tue, 29 Apr 2025 12:01:48 +0530 Subject: [PATCH 3/3] fixed for embed code and added test --- packages/lib/bookingSuccessRedirect.test.ts | 18 ++++++++++++++---- packages/lib/bookingSuccessRedirect.ts | 10 ++++++---- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/lib/bookingSuccessRedirect.test.ts b/packages/lib/bookingSuccessRedirect.test.ts index fc82d7a03aefe9..c5a919a1bb0ada 100644 --- a/packages/lib/bookingSuccessRedirect.test.ts +++ b/packages/lib/bookingSuccessRedirect.test.ts @@ -3,16 +3,26 @@ import { describe, expect, it } from "vitest"; import { filterEmbedParameter } from "./bookingSuccessRedirect"; describe("Booking Success Redirect", () => { - it("removes embed parameter and keeps other parameters", () => { + it(" removes embed parameter", () => { const params = new URLSearchParams(); params.append("embed", "namespace"); params.append("param1", "value1"); - params.append("cal.rerouting", "true"); - const filtered = filterEmbedParameter(params); + const filtered = filterEmbedParameter(params, true); expect(filtered.has("embed")).toBe(false); expect(filtered.get("param1")).toBe("value1"); - expect(filtered.get("cal.rerouting")).toBe("true"); + }); + + it("keeps embed parameter ", () => { + const params = new URLSearchParams(); + params.append("embed", "namespace"); + params.append("param1", "value1"); + + const filtered = filterEmbedParameter(params, false); + + expect(filtered.has("embed")).toBe(true); + expect(filtered.get("embed")).toBe("namespace"); + expect(filtered.get("param1")).toBe("value1"); }); }); diff --git a/packages/lib/bookingSuccessRedirect.ts b/packages/lib/bookingSuccessRedirect.ts index a6b536a0906c6d..9fc0fd53f84129 100644 --- a/packages/lib/bookingSuccessRedirect.ts +++ b/packages/lib/bookingSuccessRedirect.ts @@ -149,9 +149,11 @@ export const getBookingRedirectExtraParams = (booking: SuccessRedirectBookingTyp return queryCompatibleParams; }; -export const filterEmbedParameter = (params: URLSearchParams) => { - // Remove the embed parameter if it exists - const filteredParams = new URLSearchParams(params); +export const filterEmbedParameter = (params: URLSearchParams, isEmbed: boolean | undefined) => { + // Only filter embed parameter if we're in an embedded context + if (!isEmbed) return new URLSearchParams(params.toString()); + + const filteredParams = new URLSearchParams(params.toString()); filteredParams.delete("embed"); return filteredParams; }; @@ -192,7 +194,7 @@ export const useBookingSuccessRedirect = () => { ...query, ...bookingExtraParams, }, - searchParams: filterEmbedParameter(searchParams), + searchParams: filterEmbedParameter(searchParams, isEmbed), }); newSearchParams.forEach((value, key) => {