From 555f7594940de9beeb2cc91cf5cffe17355b4196 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 24 Jul 2025 15:00:26 -0700 Subject: [PATCH] adding afterSwitchSessionUrl --- .../UserButton/useMultisessionActions.tsx | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx b/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx index 5a630c3a4da..8afb383cf23 100644 --- a/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx +++ b/packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx @@ -4,6 +4,7 @@ import type { SignedInSessionResource, UserButtonProps, UserResource } from '@cl import { useCardState } from '@/ui/elements/contexts'; import { sleep } from '@/ui/utils/sleep'; +import { buildURL } from '../../../utils'; import { windowNavigate } from '../../../utils/windowNavigate'; import { useMultipleSessions } from '../../hooks/useMultipleSessions'; import { useRouter } from '../../router'; @@ -79,7 +80,25 @@ export const useMultisessionActions = (opts: UseMultisessionActionsParams) => { }; const handleAddAccountClicked = () => { - windowNavigate(opts.signInUrl || window.location.href); + const signInUrl = opts.signInUrl || window.location.href; + + // If we have an afterSwitchSessionUrl, append it as a query parameter + if (opts.afterSwitchSessionUrl) { + const searchParams = new URLSearchParams(); + searchParams.set('redirect_url', opts.afterSwitchSessionUrl); + + const url = buildURL( + { + base: signInUrl, + searchParams, + }, + { stringify: true }, + ); + windowNavigate(url); + } else { + windowNavigate(signInUrl); + } + return sleep(2000); };