-
Notifications
You must be signed in to change notification settings - Fork 474
Expand file tree
/
Copy pathuseUserEnterpriseConnections.tsx
More file actions
62 lines (53 loc) · 1.94 KB
/
Copy pathuseUserEnterpriseConnections.tsx
File metadata and controls
62 lines (53 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import type { EnterpriseConnectionResource } from '../../types/enterpriseConnection';
import { defineKeepPreviousDataFn } from '../clerk-rq/keep-previous-data';
import { useClerkQuery } from '../clerk-rq/useQuery';
import { useClerkInstanceContext } from '../contexts';
import { useUserBase } from './base/useUserBase';
import { useClearQueriesOnSignOut } from './useClearQueriesOnSignOut';
import { useUserEnterpriseConnectionsCacheKeys } from './useUserEnterpriseConnections.shared';
export type UseUserEnterpriseConnectionsParams = {
enabled?: boolean;
keepPreviousData?: boolean;
withOrganizationAccountLinking?: boolean;
};
export type UseUserEnterpriseConnectionsReturn = {
data: EnterpriseConnectionResource[] | undefined;
error: Error | null;
isLoading: boolean;
isFetching: boolean;
};
/**
* Enterprise connections for the signed-in user
*
* @internal
*/
function useUserEnterpriseConnections(
params: UseUserEnterpriseConnectionsParams = {},
): UseUserEnterpriseConnectionsReturn {
const { keepPreviousData = true, enabled = true, withOrganizationAccountLinking = false } = params;
const clerk = useClerkInstanceContext();
const user = useUserBase();
const { queryKey, stableKey, authenticated } = useUserEnterpriseConnectionsCacheKeys({
userId: user?.id ?? null,
withOrganizationAccountLinking,
});
const queryEnabled = enabled && clerk.loaded && Boolean(user);
useClearQueriesOnSignOut({
isSignedOut: user === null,
authenticated,
stableKeys: stableKey,
});
const query = useClerkQuery({
queryKey,
queryFn: () => user?.getEnterpriseConnections({ withOrganizationAccountLinking }),
enabled: queryEnabled,
placeholderData: defineKeepPreviousDataFn(keepPreviousData),
});
return {
data: query.data,
error: query.error ?? null,
isLoading: query.isLoading,
isFetching: query.isFetching,
};
}
export { useUserEnterpriseConnections as __internal_useUserEnterpriseConnections };