Skip to content

Commit 89e1c8f

Browse files
committed
Only poll while test step is active
1 parent 2eb8b8b commit 89e1c8f

2 files changed

Lines changed: 8 additions & 28 deletions

File tree

packages/ui/src/components/ConfigureDirectorySync/ConfigureDirectorySyncContext.tsx

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,13 @@
11
import {
22
__internal_useOrganizationDirectorySync,
3-
__internal_useOrganizationDirectorySyncUsers,
43
__internal_useOrganizationEnterpriseConnections,
54
} from '@clerk/shared/react';
6-
import type {
7-
DirectorySyncProvider,
8-
DirectorySyncResource,
9-
DirectorySyncUserResource,
10-
EnterpriseConnectionResource,
11-
} from '@clerk/shared/types';
5+
import type { DirectorySyncProvider, DirectorySyncResource, EnterpriseConnectionResource } from '@clerk/shared/types';
126
import React, { type PropsWithChildren } from 'react';
137

148
import type { DirectorySyncProviderMeta } from './providerMeta';
159
import { DIRECTORY_SYNC_PROVIDERS, directorySyncProviderForConnection } from './providerMeta';
1610

17-
export interface DirectorySyncUsersView {
18-
data: DirectorySyncUserResource[] | undefined;
19-
totalCount: number | undefined;
20-
error: Error | null;
21-
isLoading: boolean;
22-
isPolling: boolean;
23-
startPolling: () => void;
24-
stopPolling: () => void;
25-
revalidate: () => Promise<void>;
26-
}
27-
2811
/**
2912
* Shared state for the ConfigureDirectorySync wizard, persisted across steps.
3013
*
@@ -46,7 +29,6 @@ export interface ConfigureDirectorySyncData {
4629
createDirectory: () => Promise<DirectorySyncResource | undefined>;
4730
rotateToken: () => Promise<DirectorySyncResource | undefined>;
4831
setDirectoryEnabled: (enabled: boolean) => Promise<DirectorySyncResource | undefined>;
49-
users: DirectorySyncUsersView;
5032
onExit?: () => void;
5133
}
5234

@@ -80,8 +62,6 @@ export const ConfigureDirectorySyncProvider = ({
8062
rotateDirectorySyncToken,
8163
} = __internal_useOrganizationDirectorySync({ enterpriseConnectionId });
8264

83-
const users = __internal_useOrganizationDirectorySyncUsers({ directory });
84-
8565
// The token is stored with the connection it was issued for, so a response
8666
// that lands after the connection changed is never shown for the new one.
8767
const [revealed, setRevealed] = React.useState<RevealedToken | null>(null);
@@ -123,7 +103,6 @@ export const ConfigureDirectorySyncProvider = ({
123103
createDirectory,
124104
rotateToken,
125105
setDirectoryEnabled,
126-
users,
127106
onExit,
128107
};
129108

packages/ui/src/components/ConfigureDirectorySync/steps/TestSyncStep.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { __internal_useOrganizationDirectorySyncUsers } from '@clerk/shared/react';
12
import type { DirectorySyncUserResource } from '@clerk/shared/types';
23
import React from 'react';
34

@@ -85,19 +86,19 @@ const ProvisionedUserRow = ({ user }: { user: DirectorySyncUserResource }): JSX.
8586

8687
export const TestSyncStep = (): JSX.Element => {
8788
const { goPrev } = useWizard();
88-
const { providerMeta, users, onExit } = useConfigureDirectorySync();
89+
const { providerMeta, directory, onExit } = useConfigureDirectorySync();
8990
const { t } = useLocalizations();
91+
const users = __internal_useOrganizationDirectorySyncUsers({ directory });
9092

9193
const rows = users.data ?? [];
9294
const providerName = t((providerMeta ?? DIRECTORY_SYNC_PROVIDERS.custom).name);
9395

94-
// The users hook lives in the wizard provider, which stays mounted across
95-
// steps, so polling is armed and released by this step's own lifecycle.
96-
const { startPolling, stopPolling } = users;
96+
// Poll while this step is visible; the list doubles as a live feed while the
97+
// admin pushes test users from the IdP. Unmounting the step ends the poll.
98+
const { startPolling } = users;
9799
React.useEffect(() => {
98100
startPolling();
99-
return () => stopPolling();
100-
}, [startPolling, stopPolling]);
101+
}, [startPolling]);
101102

102103
return (
103104
<>

0 commit comments

Comments
 (0)