Skip to content

Commit 908e5e0

Browse files
fix: routing-form org redirects when profile slug equals legacy slug (calcom#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>
1 parent 3490272 commit 908e5e0

2 files changed

Lines changed: 31 additions & 5 deletions

File tree

packages/app-store/routing-forms/__tests__/getEventTypeRedirectUrl.test.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ describe("getAbsoluteEventTypeRedirectUrl", () => {
1111
nonOrgTeamslug: null,
1212
userOrigin: "https://user.cal.com",
1313
teamOrigin: "https://team.cal.com",
14+
user: {
15+
username: null,
16+
},
1417
};
1518

1619
const defaultParams = {
@@ -23,14 +26,26 @@ describe("getAbsoluteEventTypeRedirectUrl", () => {
2326
it("should return WEBAPP_URL for non-migrated user", () => {
2427
const result = getAbsoluteEventTypeRedirectUrl({
2528
...defaultParams,
26-
eventTypeRedirectUrl: "user/event",
27-
form: { ...defaultForm, nonOrgUsername: "user" },
29+
eventTypeRedirectUrl: "old-user/event",
30+
form: {
31+
...defaultForm,
32+
nonOrgUsername: "old-user",
33+
user: { username: "new-user" },
34+
},
2835
});
29-
expect(result).toBe(`${WEBAPP_URL}/user/event?`);
36+
expect(result).toBe(`${WEBAPP_URL}/old-user/event?`);
3037
});
3138

3239
it("should return user origin for migrated user", () => {
33-
const result = getAbsoluteEventTypeRedirectUrl(defaultParams);
40+
const result = getAbsoluteEventTypeRedirectUrl({
41+
...defaultParams,
42+
eventTypeRedirectUrl: "user/event",
43+
form: {
44+
...defaultForm,
45+
nonOrgUsername: "user",
46+
user: { username: "user" },
47+
},
48+
});
3449
expect(result).toBe("https://user.cal.com/user/event?");
3550
});
3651

packages/app-store/routing-forms/getEventTypeRedirectUrl.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,15 @@ export function getAbsoluteEventTypeRedirectUrl({
5858
* The origin for the team the form belongs to
5959
*/
6060
teamOrigin: string;
61+
/**
62+
* The profile user who owns the form
63+
*/
64+
user: {
65+
/**
66+
* Current username on the profile
67+
*/
68+
username: string | null;
69+
};
6170
};
6271
allURLSearchParams: URLSearchParams;
6372
isEmbed?: boolean;
@@ -82,7 +91,9 @@ export function getAbsoluteEventTypeRedirectUrl({
8291
}
8392

8493
if (usernameInRedirectUrl && form.nonOrgUsername) {
85-
const isEventTypeRedirectToOldUser = usernameInRedirectUrl === form.nonOrgUsername;
94+
const hasSameProfileUsername = form.user?.username === form.nonOrgUsername;
95+
const isEventTypeRedirectToOldUser =
96+
!hasSameProfileUsername && usernameInRedirectUrl === form.nonOrgUsername;
8697
if (isEventTypeRedirectToOldUser) {
8798
return `${WEBAPP_URL}/${eventTypeRedirectUrl}?${allURLSearchParams}`;
8899
}

0 commit comments

Comments
 (0)