Skip to content

Commit 3e3d37c

Browse files
committed
fix(web): preserve query params when redirecting affiliate links to referrals
1 parent c1fe7f7 commit 3e3d37c

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

web/src/app/[sponsee]/page.tsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ export const generateMetadata = async ({
2424

2525
export default async function SponseePage({
2626
params,
27+
searchParams,
2728
}: {
2829
params: Promise<{ sponsee: string }>
30+
searchParams: Promise<Record<string, string | string[] | undefined>>
2931
}) {
3032
const { sponsee } = await params
33+
const resolvedSearchParams = await searchParams
3134
const sponseeName = sponsee.toLowerCase()
3235

3336
const referralCode = await db
@@ -66,7 +69,20 @@ export default async function SponseePage({
6669
)
6770
}
6871

69-
redirect(
70-
`/referrals/${referralCode}?referrer=${encodeURIComponent(sponseeName)}`,
71-
)
72+
// Build query string preserving all incoming params and adding/overriding referrer
73+
const queryParams = new URLSearchParams()
74+
for (const [key, value] of Object.entries(resolvedSearchParams)) {
75+
if (value !== undefined) {
76+
if (Array.isArray(value)) {
77+
for (const v of value) {
78+
queryParams.append(key, v)
79+
}
80+
} else {
81+
queryParams.set(key, value)
82+
}
83+
}
84+
}
85+
queryParams.set('referrer', sponseeName)
86+
87+
redirect(`/referrals/${referralCode}?${queryParams.toString()}`)
7288
}

0 commit comments

Comments
 (0)