Skip to content

Commit 1da28a2

Browse files
authored
chore(clerk-js,types): Load tasks based on environment settings (#5422)
1 parent 4d9f1ee commit 1da28a2

File tree

22 files changed

+176
-138
lines changed

22 files changed

+176
-138
lines changed

.changeset/lazy-impalas-clean.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@clerk/clerk-js': patch
3+
'@clerk/types': patch
4+
---
5+
6+
Load tasks based on environment settings

integration/templates/next-app-router/src/app/layout.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ export default function RootLayout({ children }: { children: React.ReactNode })
2424
persistClient: process.env.NEXT_PUBLIC_EXPERIMENTAL_PERSIST_CLIENT
2525
? process.env.NEXT_PUBLIC_EXPERIMENTAL_PERSIST_CLIENT === 'true'
2626
: undefined,
27-
// `experimental.withSessionTasks` will be removed soon in favor of checking via environment response
28-
withSessionTasks: true,
2927
}}
3028
>
3129
<html lang='en'>

packages/clerk-js/bundlewatch.config.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
22
"files": [
3-
{ "path": "./dist/clerk.js", "maxSize": "580.5kB" },
3+
{ "path": "./dist/clerk.js", "maxSize": "580.7kB" },
44
{ "path": "./dist/clerk.browser.js", "maxSize": "79.25kB" },
55
{ "path": "./dist/clerk.headless.js", "maxSize": "55KB" },
6-
{ "path": "./dist/ui-common*.js", "maxSize": "94KB" },
6+
{ "path": "./dist/ui-common*.js", "maxSize": "96KB" },
77
{ "path": "./dist/vendors*.js", "maxSize": "30KB" },
88
{ "path": "./dist/coinbase*.js", "maxSize": "35.5KB" },
99
{ "path": "./dist/createorganization*.js", "maxSize": "5KB" },
@@ -21,6 +21,7 @@
2121
{ "path": "./dist/keylessPrompt*.js", "maxSize": "5.9KB" },
2222
{ "path": "./dist/pricingTable*.js", "maxSize": "5KB" },
2323
{ "path": "./dist/checkout*.js", "maxSize": "9KB" },
24-
{ "path": "./dist/up-billing-page*.js", "maxSize": "1KB" }
24+
{ "path": "./dist/up-billing-page*.js", "maxSize": "1KB" },
25+
{ "path": "./dist/sessionTasks*.js", "maxSize": "1KB" }
2526
]
2627
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -486,14 +486,14 @@ describe('Clerk singleton', () => {
486486
getToken: jest.fn(),
487487
lastActiveToken: { getRawString: () => 'mocked-token' },
488488
tasks: [{ key: 'org' }],
489-
currentTask: { key: 'org', __internal_getUrl: () => 'https://foocorp.com/add-organization' },
489+
currentTask: { key: 'org', __internal_getUrl: () => 'https://sut/tasks/add-organization' },
490490
reload: jest.fn(() =>
491491
Promise.resolve({
492492
id: '1',
493493
status: 'pending',
494494
user: {},
495495
tasks: [{ key: 'org' }],
496-
currentTask: { key: 'org', __internal_getUrl: () => 'https://foocorp.com/add-organization' },
496+
currentTask: { key: 'org', __internal_getUrl: () => 'https://sut/tasks/add-organization' },
497497
}),
498498
),
499499
};
@@ -2287,7 +2287,7 @@ describe('Clerk singleton', () => {
22872287
status: 'pending',
22882288
user: {},
22892289
tasks: [{ key: 'org' }],
2290-
currentTask: { key: 'org', __internal_getUrl: () => 'https://foocorp.com/add-organization' },
2290+
currentTask: { key: 'org', __internal_getUrl: () => 'https://sut/tasks/add-organization' },
22912291
lastActiveToken: { getRawString: () => 'mocked-token' },
22922292
};
22932293

@@ -2316,7 +2316,7 @@ describe('Clerk singleton', () => {
23162316
await sut.setActive({ session: mockResource as any as PendingSessionResource });
23172317
await sut.__experimental_nextTask();
23182318

2319-
expect(mockNavigate.mock.calls[0][0]).toBe('/sign-in#/add-organization');
2319+
expect(mockNavigate.mock.calls[0][0]).toBe('/sign-in#/tasks/add-organization');
23202320
});
23212321
});
23222322

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,7 +1086,7 @@ export class Clerk implements ClerkInterface {
10861086
}
10871087

10881088
if (newSession?.currentTask) {
1089-
await navigateToTask(session.currentTask, {
1089+
await navigateToTask(session.currentTask.key, {
10901090
globalNavigate: this.navigate,
10911091
componentNavigationContext: this.#componentNavigationContext,
10921092
options: this.#options,
@@ -1109,7 +1109,7 @@ export class Clerk implements ClerkInterface {
11091109
}
11101110

11111111
if (session.status === 'pending') {
1112-
await navigateToTask(session.currentTask, {
1112+
await navigateToTask(session.currentTask.key, {
11131113
options: this.#options,
11141114
environment: this.environment,
11151115
globalNavigate: this.navigate,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ interface NavigateToTaskOptions {
2424
* @internal
2525
*/
2626
export function navigateToTask(
27-
task: SessionTask,
27+
routeKey: keyof typeof SESSION_TASK_ROUTE_BY_KEY,
2828
{ componentNavigationContext, globalNavigate, options, environment }: NavigateToTaskOptions,
2929
) {
30-
const taskRoute = `/${SESSION_TASK_ROUTE_BY_KEY[task.key]}`;
30+
const taskRoute = `/tasks/${SESSION_TASK_ROUTE_BY_KEY[routeKey]}`;
3131

3232
if (componentNavigationContext) {
3333
return componentNavigationContext.navigate(componentNavigationContext.indexPath + taskRoute);

packages/clerk-js/src/ui/common/redirects.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export function buildSessionTaskRedirectUrl({
4545
routing,
4646
baseUrl,
4747
path,
48-
endpoint: `/${SESSION_TASK_ROUTE_BY_KEY[task.key]}`,
48+
endpoint: `/tasks/${SESSION_TASK_ROUTE_BY_KEY[task.key]}`,
4949
authQueryString: null,
5050
});
5151
}

packages/clerk-js/src/ui/components/OrganizationList/OrganizationListPage.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useOrganizationList, useUser } from '@clerk/shared/react';
22
import { useContext, useState } from 'react';
33

44
import { useEnvironment, useOrganizationListContext } from '../../contexts';
5-
import { SessionTaskContext } from '../../contexts/components/SessionTask';
5+
import { SessionTasksContext } from '../../contexts/components/SessionTasks';
66
import { Box, Col, descriptors, Flex, localizationKeys, Spinner } from '../../customizables';
77
import { Action, Actions, Card, Header, useCardState, withCardStateProvider } from '../../elements';
88
import { useInView } from '../../hooks';
@@ -112,7 +112,7 @@ export const OrganizationListPage = withCardStateProvider(() => {
112112
const OrganizationListFlows = ({ showListInitially }: { showListInitially: boolean }) => {
113113
const { navigateAfterCreateOrganization, skipInvitationScreen, hideSlug } = useOrganizationListContext();
114114
const [isCreateOrganizationFlow, setCreateOrganizationFlow] = useState(!showListInitially);
115-
const sessionTaskContext = useContext(SessionTaskContext);
115+
const sessionTasksContext = useContext(SessionTasksContext);
116116
return (
117117
<>
118118
{!isCreateOrganizationFlow && (
@@ -127,7 +127,7 @@ const OrganizationListFlows = ({ showListInitially }: { showListInitially: boole
127127
>
128128
<CreateOrganizationForm
129129
flow='organizationList'
130-
onComplete={sessionTaskContext?.nextTask}
130+
onComplete={sessionTasksContext?.nextTask}
131131
startPage={{ headerTitle: localizationKeys('organizationList.createOrganization') }}
132132
skipInvitationScreen={skipInvitationScreen}
133133
navigateAfterCreateOrganization={org =>

packages/clerk-js/src/ui/components/OrganizationList/UserMembershipList.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { OrganizationResource } from '@clerk/types';
33
import { useContext } from 'react';
44

55
import { useOrganizationListContext } from '../../contexts';
6-
import { SessionTaskContext } from '../../contexts/components/SessionTask';
6+
import { SessionTasksContext } from '../../contexts/components/SessionTasks';
77
import { OrganizationPreview, PersonalWorkspacePreview, useCardState, withCardStateProvider } from '../../elements';
88
import { localizationKeys } from '../../localization';
99
import { OrganizationListPreviewButton, sharedMainIdentifierSx } from './shared';
@@ -12,7 +12,7 @@ export const MembershipPreview = withCardStateProvider((props: { organization: O
1212
const card = useCardState();
1313
const { navigateAfterSelectOrganization } = useOrganizationListContext();
1414
const { isLoaded, setActive } = useOrganizationList();
15-
const sessionTaskContext = useContext(SessionTaskContext);
15+
const sessionTasksContext = useContext(SessionTasksContext);
1616

1717
if (!isLoaded) {
1818
return null;
@@ -23,8 +23,8 @@ export const MembershipPreview = withCardStateProvider((props: { organization: O
2323
organization,
2424
});
2525

26-
if (sessionTaskContext?.nextTask) {
27-
return sessionTaskContext?.nextTask();
26+
if (sessionTasksContext?.nextTask) {
27+
return sessionTasksContext?.nextTask();
2828
}
2929

3030
await navigateAfterSelectOrganization(organization);

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

Lines changed: 0 additions & 58 deletions
This file was deleted.

0 commit comments

Comments
 (0)