Skip to content

Commit d185134

Browse files
committed
Use taskUrl from AIOs navigation
1 parent 011afdd commit d185134

File tree

7 files changed

+14
-7
lines changed

7 files changed

+14
-7
lines changed

packages/clerk-js/src/core/clerk.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1923,6 +1923,7 @@ export class Clerk implements ClerkInterface {
19231923
return this.setActive({
19241924
session: su.sessionId,
19251925
redirectUrl: redirectUrls.getAfterSignUpUrl(),
1926+
onPendingSession,
19261927
});
19271928
}
19281929

@@ -1947,6 +1948,7 @@ export class Clerk implements ClerkInterface {
19471948
return this.setActive({
19481949
session: sessionId,
19491950
redirectUrl: redirectUrls.getAfterSignInUrl(),
1951+
onPendingSession,
19501952
});
19511953
}
19521954
}

packages/clerk-js/src/ui/components/SessionTasks/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ const SessionTasksStart = () => {
2727
const currentTaskKey = clerk.session?.currentTask?.key;
2828
if (!currentTaskKey) return;
2929

30-
void navigate(`./${INTERNAL_SESSION_TASK_ROUTE_BY_KEY[currentTaskKey]}`);
30+
void navigate(
31+
clerk.__internal_getOption('taskUrls')?.[currentTaskKey] ??
32+
`./${INTERNAL_SESSION_TASK_ROUTE_BY_KEY[currentTaskKey]}`,
33+
);
3134
}, 500);
3235
return () => clearTimeout(timeoutId);
3336
}, [navigate, clerk, redirectUrlComplete]);

packages/clerk-js/src/ui/components/SessionTasks/tasks/TaskChooseOrganization/ChooseOrganizationScreen.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ export const ChooseOrganizationScreen = withCardStateProvider(
9797

9898
const MembershipPreview = withCardStateProvider((props: { organization: OrganizationResource }) => {
9999
const card = useCardState();
100-
101100
const { redirectUrlComplete } = useSessionTasksContext();
102101
const { isLoaded, setActive } = useOrganizationList();
103102

packages/clerk-js/src/ui/components/SignIn/SignInStart.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ function SignInStartInternal(): JSX.Element {
199199
}
200200
}, [identifierField.value, identifierAttributes]);
201201

202-
// TODO -> Maybe navigate on a effect here?
203202
useEffect(() => {
204203
if (!organizationTicket) {
205204
return;

packages/clerk-js/src/ui/components/UserButton/useMultisessionActions.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ type UseMultisessionActionsParams = {
2121
} & Pick<UserButtonProps, 'userProfileMode' | 'appearance' | 'userProfileProps'>;
2222

2323
export const useMultisessionActions = (opts: UseMultisessionActionsParams) => {
24-
const { setActive, signOut, openUserProfile } = useClerk();
24+
const { setActive, signOut, openUserProfile, __internal_getOption } = useClerk();
2525
const card = useCardState();
2626
const { signedInSessions, otherSessions } = useMultipleSessions({ user: opts.user });
2727
const { navigate } = useRouter();
@@ -80,7 +80,7 @@ export const useMultisessionActions = (opts: UseMultisessionActionsParams) => {
8080
await navigateToTask(session, {
8181
baseUrl: displayConfig.signInUrl,
8282
navigate: navigate,
83-
// TODO -> Pass `clerk` into callback so we can access the taskUrls here
83+
options: { taskUrls: __internal_getOption('taskUrls') },
8484
});
8585
},
8686
}).finally(() => {

packages/clerk-js/src/ui/contexts/components/SignUp.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,11 @@ export const useSignUpContext = (): SignUpContextType => {
117117

118118
const onPendingSession: OnPendingSessionFn = async ({ session }) => {
119119
const currentTaskKey = session.currentTask.key;
120+
const customTaskUrl = clerk.__internal_getOption('taskUrls')?.[currentTaskKey];
120121

121122
switch (currentTaskKey) {
122123
case 'choose-organization': {
123-
await navigate(`../tasks/${currentTaskKey}`);
124+
await navigate(customTaskUrl ?? `../tasks/${currentTaskKey}`);
124125
}
125126
}
126127
};

packages/types/src/clerk.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1065,7 +1065,7 @@ export type ClerkOptions = PendingSessionOptions &
10651065
taskUrls?: Record<SessionTask['key'], string>;
10661066

10671067
/**
1068-
* Event handler for session transitions to `pending`
1068+
* Event handler called when a session transitions to `pending` status after successful sign-in.
10691069
*/
10701070
onPendingSession?: OnPendingSessionFn;
10711071
};
@@ -1193,6 +1193,9 @@ export type SetActiveParams = {
11931193
*/
11941194
redirectUrl?: string;
11951195

1196+
/**
1197+
* Event handler called when a session transitions to `pending` status after successful sign-in.
1198+
*/
11961199
onPendingSession?: OnPendingSessionFn;
11971200
};
11981201

0 commit comments

Comments
 (0)