From 908e5e05f2bf0931c27641069245e9033c386d86 Mon Sep 17 00:00:00 2001 From: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:42:58 +0530 Subject: [PATCH] fix: routing-form org redirects when profile slug equals legacy slug (#25003) * fix: routing-form org redirects when profile slug equals legacy slug * update * Update packages/app-store/routing-forms/getEventTypeRedirectUrl.ts Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> * fix type error * addressed review --------- Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com> --- .../__tests__/getEventTypeRedirectUrl.test.ts | 23 +++++++++++++++---- .../routing-forms/getEventTypeRedirectUrl.ts | 13 ++++++++++- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/packages/app-store/routing-forms/__tests__/getEventTypeRedirectUrl.test.ts b/packages/app-store/routing-forms/__tests__/getEventTypeRedirectUrl.test.ts index a24859d53c..950d546f86 100644 --- a/packages/app-store/routing-forms/__tests__/getEventTypeRedirectUrl.test.ts +++ b/packages/app-store/routing-forms/__tests__/getEventTypeRedirectUrl.test.ts @@ -11,6 +11,9 @@ describe("getAbsoluteEventTypeRedirectUrl", () => { nonOrgTeamslug: null, userOrigin: "https://user.cal.com", teamOrigin: "https://team.cal.com", + user: { + username: null, + }, }; const defaultParams = { @@ -23,14 +26,26 @@ describe("getAbsoluteEventTypeRedirectUrl", () => { it("should return WEBAPP_URL for non-migrated user", () => { const result = getAbsoluteEventTypeRedirectUrl({ ...defaultParams, - eventTypeRedirectUrl: "user/event", - form: { ...defaultForm, nonOrgUsername: "user" }, + eventTypeRedirectUrl: "old-user/event", + form: { + ...defaultForm, + nonOrgUsername: "old-user", + user: { username: "new-user" }, + }, }); - expect(result).toBe(`${WEBAPP_URL}/user/event?`); + expect(result).toBe(`${WEBAPP_URL}/old-user/event?`); }); it("should return user origin for migrated user", () => { - const result = getAbsoluteEventTypeRedirectUrl(defaultParams); + const result = getAbsoluteEventTypeRedirectUrl({ + ...defaultParams, + eventTypeRedirectUrl: "user/event", + form: { + ...defaultForm, + nonOrgUsername: "user", + user: { username: "user" }, + }, + }); expect(result).toBe("https://user.cal.com/user/event?"); }); diff --git a/packages/app-store/routing-forms/getEventTypeRedirectUrl.ts b/packages/app-store/routing-forms/getEventTypeRedirectUrl.ts index af392e20be..5719553530 100644 --- a/packages/app-store/routing-forms/getEventTypeRedirectUrl.ts +++ b/packages/app-store/routing-forms/getEventTypeRedirectUrl.ts @@ -58,6 +58,15 @@ export function getAbsoluteEventTypeRedirectUrl({ * The origin for the team the form belongs to */ teamOrigin: string; + /** + * The profile user who owns the form + */ + user: { + /** + * Current username on the profile + */ + username: string | null; + }; }; allURLSearchParams: URLSearchParams; isEmbed?: boolean; @@ -82,7 +91,9 @@ export function getAbsoluteEventTypeRedirectUrl({ } if (usernameInRedirectUrl && form.nonOrgUsername) { - const isEventTypeRedirectToOldUser = usernameInRedirectUrl === form.nonOrgUsername; + const hasSameProfileUsername = form.user?.username === form.nonOrgUsername; + const isEventTypeRedirectToOldUser = + !hasSameProfileUsername && usernameInRedirectUrl === form.nonOrgUsername; if (isEventTypeRedirectToOldUser) { return `${WEBAPP_URL}/${eventTypeRedirectUrl}?${allURLSearchParams}`; }