Skip to content

Commit

Permalink
Display pending task routes
Browse files Browse the repository at this point in the history
  • Loading branch information
LauraBeatris committed Feb 18, 2025
1 parent 02ef79e commit e836ee1
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 0 deletions.
50 changes: 50 additions & 0 deletions packages/clerk-js/src/ui/components/PendingTask/PendingTask.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
import { useSessionContext } from '@clerk/shared/react/index';
import type { SessionTasks } from '@clerk/types';
import type { ComponentType } from 'react';
import { withRedirectToAfterSignIn } from 'ui/common';

import { Route } from '../../../ui/router';
import { OrganizationList } from '../OrganizationList';

const paths: Record<keyof SessionTasks, string> = {
orgs: 'select-organization',
};

const TaskRegistry: Record<keyof SessionTasks, ComponentType> = {
orgs: OrganizationList,
};

function usePendingTask() {
const session = useSessionContext();

if (!session) {
return null;
}

const [pendingTask] = Object.entries(session.tasks ?? {}).map(([task, value]) => ({
task,
...value,
}));

return pendingTask;
}

export function _PendingTask() {
const pendingTask = usePendingTask();

if (!pendingTask) {
return null;
}

const Task = TaskRegistry['orgs'];
// @ts-ignore
const path = paths[pendingTask.task];

return (
<Route path={path}>
<Task />
</Route>
);
}

export const PendingTask = withRedirectToAfterSignIn(_PendingTask);
1 change: 1 addition & 0 deletions packages/clerk-js/src/ui/components/PendingTask/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './PendingTask';
2 changes: 2 additions & 0 deletions packages/clerk-js/src/ui/components/SignIn/SignIn.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
} from '../../contexts';
import { Flow } from '../../customizables';
import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../router';
import { PendingTask } from '../PendingTask';
import { SignUpContinue } from '../SignUp/SignUpContinue';
import { SignUpSSOCallback } from '../SignUp/SignUpSSOCallback';
import { SignUpStart } from '../SignUp/SignUpStart';
Expand Down Expand Up @@ -138,6 +139,7 @@ function SignInRoutes(): JSX.Element {
<Route>
<RedirectToSignIn />
</Route>
<PendingTask />
</Switch>
</Flow.Root>
);
Expand Down
2 changes: 2 additions & 0 deletions packages/clerk-js/src/ui/components/SignUp/SignUp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { SignUpEmailLinkFlowComplete } from '../../common/EmailLinkCompleteFlowC
import { SignUpContext, useSignUpContext, withCoreSessionSwitchGuard } from '../../contexts';
import { Flow } from '../../customizables';
import { Route, Switch, VIRTUAL_ROUTER_BASE_PATH } from '../../router';
import { PendingTask } from '../PendingTask';
import { SignUpContinue } from './SignUpContinue';
import { SignUpSSOCallback } from './SignUpSSOCallback';
import { SignUpStart } from './SignUpStart';
Expand Down Expand Up @@ -80,6 +81,7 @@ function SignUpRoutes(): JSX.Element {
<Route>
<RedirectToSignUp />
</Route>
<PendingTask />
</Switch>
</Flow.Root>
);
Expand Down

0 comments on commit e836ee1

Please sign in to comment.