Skip to content

Commit c2c241f

Browse files
committed
Extract tasks under /tasks root path
1 parent 5d9fb59 commit c2c241f

File tree

7 files changed

+52
-27
lines changed

7 files changed

+52
-27
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { OrganizationListContext } from '../../contexts';
2+
import { OrganizationList } from '../OrganizationList';
3+
4+
/**
5+
* @internal
6+
*/
7+
export function OrganizationSelectionTask() {
8+
return (
9+
<OrganizationListContext.Provider
10+
value={{
11+
componentName: 'OrganizationList',
12+
skipInvitationScreen: true,
13+
}}
14+
>
15+
<OrganizationList />
16+
</OrganizationListContext.Provider>
17+
);
18+
}

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

-1
This file was deleted.

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

+4-11
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,16 @@ import type { SessionTask } from '@clerk/types';
44
import { useCallback, useEffect } from 'react';
55

66
import { SESSION_TASK_ROUTE_BY_KEY } from '../../../core/sessionTasks';
7-
import { OrganizationListContext } from '../../contexts';
87
import { SessionTaskContext as SessionTaskContext } from '../../contexts/components/SessionTask';
98
import { Route, Switch, useRouter } from '../../router';
10-
import { OrganizationList } from '../OrganizationList';
9+
import { LazyOrganizationSelectionTask } from './lazySessionTasks';
10+
import { usePreloadTasks } from './usePreloadTasks';
1111

12-
// TODO -> Lazy load individual routes per environment config
1312
function SessionTaskRoutes(): JSX.Element {
1413
return (
1514
<Switch>
1615
<Route path={SESSION_TASK_ROUTE_BY_KEY['org']}>
17-
<OrganizationListContext.Provider
18-
value={{
19-
componentName: 'OrganizationList',
20-
skipInvitationScreen: true,
21-
}}
22-
>
23-
<OrganizationList />
24-
</OrganizationListContext.Provider>
16+
<LazyOrganizationSelectionTask />
2517
</Route>
2618
</Switch>
2719
);
@@ -31,6 +23,7 @@ function SessionTaskRoutes(): JSX.Element {
3123
* @internal
3224
*/
3325
export function SessionTask({ redirectUrlComplete }: { redirectUrlComplete: string }): JSX.Element {
26+
usePreloadTasks();
3427
const { __experimental_nextTask, session, telemetry } = useClerk();
3528
const { navigate } = useRouter();
3629

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { lazy } from 'react';
2+
3+
export const preloadOrganizationSelectionTask = () =>
4+
import(/* webpackChunkName: "session-tasks"*/ './OrganizationSelectionTask');
5+
6+
const LazyOrganizationSelectionTask = lazy(() =>
7+
import(/* webpackChunkName: "session-tasks"*/ './OrganizationSelectionTask').then(module => ({
8+
default: module.OrganizationSelectionTask,
9+
})),
10+
);
11+
12+
export { LazyOrganizationSelectionTask };
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { useEnvironment } from '../../../ui/contexts';
2+
import { preloadOrganizationSelectionTask } from './lazySessionTasks';
3+
4+
/**
5+
* Preloads tasks based on the environment settings
6+
* @internal
7+
*/
8+
export function usePreloadTasks() {
9+
const { organizationSettings } = useEnvironment();
10+
11+
if (organizationSettings.forceOrganizationSelection) {
12+
void preloadOrganizationSelectionTask();
13+
}
14+
}

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

+3-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { useClerk } from '@clerk/shared/react';
22
import type { SignInModalProps, SignInProps } from '@clerk/types';
33
import React from 'react';
44

5-
import { SESSION_TASK_ROUTE_BY_KEY } from '../../../core/sessionTasks';
65
import { normalizeRoutingOptions } from '../../../utils/normalizeRoutingOptions';
76
import { SignInEmailLinkFlowComplete, SignUpEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowCard';
87
import type { SignUpContextType } from '../../contexts';
@@ -15,7 +14,7 @@ import {
1514
} from '../../contexts';
1615
import { Flow } from '../../customizables';
1716
import { useFetch } from '../../hooks';
18-
import { preloadSessionTasks, SessionTasks } from '../../lazyModules/components';
17+
import { SessionTasks } from '../../lazyModules/components';
1918
import { Route, Switch, useRouter, VIRTUAL_ROUTER_BASE_PATH } from '../../router';
2019
import {
2120
LazySignUpContinue,
@@ -130,11 +129,8 @@ function SignInRoutes(): JSX.Element {
130129
>
131130
<LazySignUpVerifyPhone />
132131
</Route>
133-
<Route path={SESSION_TASK_ROUTE_BY_KEY['org']}>
134-
<SessionTasks
135-
task='org'
136-
redirectUrlComplete={signInContext.afterSignUpUrl}
137-
/>
132+
<Route path='tasks'>
133+
<SessionTasks redirectUrlComplete={signInContext.afterSignInUrl} />
138134
</Route>
139135
<Route index>
140136
<LazySignUpContinue />
@@ -162,9 +158,6 @@ function SignInRoutes(): JSX.Element {
162158
const usePreloadSignUp = (enabled = false) =>
163159
useFetch(enabled ? preloadSignUp : undefined, 'preloadComponent', { staleTime: Infinity });
164160

165-
const usePreloadSessionTask = (enabled = false) =>
166-
useFetch(enabled ? preloadSessionTasks : undefined, 'preloadComponent', { staleTime: Infinity });
167-
168161
function SignInRoot() {
169162
const { __internal_setComponentNavigationContext } = useClerk();
170163
const { navigate, indexPath } = useRouter();

packages/clerk-js/src/ui/components/SignUp/SignUp.tsx

+1-5
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,14 @@ import React from 'react';
55
import { SignUpEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowCard';
66
import { SignUpContext, useSignUpContext, withCoreSessionSwitchGuard } from '../../contexts';
77
import { Flow } from '../../customizables';
8-
import { useFetch } from '../../hooks';
9-
import { preloadSessionTasks, SessionTasks } from '../../lazyModules/components';
8+
import { SessionTasks } from '../../lazyModules/components';
109
import { Route, Switch, useRouter, VIRTUAL_ROUTER_BASE_PATH } from '../../router';
1110
import { SignUpContinue } from './SignUpContinue';
1211
import { SignUpSSOCallback } from './SignUpSSOCallback';
1312
import { SignUpStart } from './SignUpStart';
1413
import { SignUpVerifyEmail } from './SignUpVerifyEmail';
1514
import { SignUpVerifyPhone } from './SignUpVerifyPhone';
1615

17-
const usePreloadSessionTask = (enabled = false) =>
18-
useFetch(enabled ? preloadSessionTasks : undefined, 'preloadComponent', { staleTime: Infinity });
19-
2016
function RedirectToSignUp() {
2117
const clerk = useClerk();
2218
React.useEffect(() => {

0 commit comments

Comments
 (0)