11import { buildAccountsBaseUrl } from '@clerk/shared/buildAccountsBaseUrl' ;
2- import type { JwtPayload } from '@clerk/types' ;
2+ import type { SessionStatusClaim } from '@clerk/types' ;
33
44import { constants } from './constants' ;
55import { errorThrower , parsePublishableKey } from './util/shared' ;
@@ -71,7 +71,7 @@ type CreateRedirect = <ReturnType>(params: {
7171 baseUrl : URL | string ;
7272 signInUrl ?: URL | string ;
7373 signUpUrl ?: URL | string ;
74- sessionStatus ?: JwtPayload [ 'sts' ] ;
74+ sessionStatus : SessionStatusClaim | null ;
7575} ) => {
7676 redirectToSignIn : RedirectFun < ReturnType > ;
7777 redirectToSignUp : RedirectFun < ReturnType > ;
@@ -84,28 +84,28 @@ export const createRedirect: CreateRedirect = params => {
8484 const isDevelopment = parsedPublishableKey ?. instanceType === 'development' ;
8585 const accountsBaseUrl = buildAccountsBaseUrl ( frontendApi ) ;
8686
87- const redirectToTasks = ( { targetUrl, returnBackUrl } : RedirectToParams & { targetUrl : string | URL } ) => {
88- const rootTasksPath = '/tasks' ;
89-
90- const tasksUrl =
91- typeof targetUrl === 'string' ? targetUrl . replace ( / \/ $ / , '' ) + rootTasksPath : new URL ( rootTasksPath , targetUrl ) ;
92-
93- return redirectAdapter ( buildUrl ( baseUrl , tasksUrl , returnBackUrl , isDevelopment ? params . devBrowserToken : null ) ) ;
87+ const redirectToTasks = ( url : string ) => {
88+ return redirectAdapter ( buildUrl ( url , '/tasks' ) ) ;
9489 } ;
9590
9691 const redirectToSignUp = ( { returnBackUrl } : RedirectToParams = { } ) => {
9792 if ( ! signUpUrl && ! accountsBaseUrl ) {
9893 errorThrower . throwMissingPublishableKeyError ( ) ;
9994 }
95+
10096 const accountsSignUpUrl = `${ accountsBaseUrl } /sign-up` ;
97+ const redirectUrl = buildUrl (
98+ baseUrl ,
99+ signUpUrl || accountsSignUpUrl ,
100+ returnBackUrl ,
101+ isDevelopment ? params . devBrowserToken : null ,
102+ ) ;
101103
102104 if ( sessionStatus === 'pending' ) {
103- return redirectToTasks ( { targetUrl : signUpUrl ?? accountsSignUpUrl , returnBackUrl } ) ;
105+ return redirectToTasks ( redirectUrl ) ;
104106 }
105107
106- return redirectAdapter (
107- buildUrl ( baseUrl , signUpUrl || accountsSignUpUrl , returnBackUrl , isDevelopment ? params . devBrowserToken : null ) ,
108- ) ;
108+ return redirectAdapter ( redirectUrl ) ;
109109 } ;
110110
111111 const redirectToSignIn = ( { returnBackUrl } : RedirectToParams = { } ) => {
@@ -114,14 +114,18 @@ export const createRedirect: CreateRedirect = params => {
114114 }
115115
116116 const accountsSignInUrl = `${ accountsBaseUrl } /sign-in` ;
117+ const redirectUrl = buildUrl (
118+ baseUrl ,
119+ signInUrl || accountsSignInUrl ,
120+ returnBackUrl ,
121+ isDevelopment ? params . devBrowserToken : null ,
122+ ) ;
117123
118124 if ( sessionStatus === 'pending' ) {
119- return redirectToTasks ( { targetUrl : signInUrl ?? accountsSignInUrl , returnBackUrl } ) ;
125+ return redirectToTasks ( redirectUrl ) ;
120126 }
121127
122- return redirectAdapter (
123- buildUrl ( baseUrl , signInUrl || accountsSignInUrl , returnBackUrl , isDevelopment ? params . devBrowserToken : null ) ,
124- ) ;
128+ return redirectAdapter ( redirectUrl ) ;
125129 } ;
126130
127131 return { redirectToSignUp, redirectToSignIn } ;
0 commit comments