1
1
import type {
2
2
ClerkPaginationParams ,
3
3
GetDomainsParams ,
4
+ GetInvitationsParams ,
4
5
GetMembershipRequestParams ,
5
6
GetMembershipsParams ,
6
7
GetPendingInvitationsParams ,
@@ -14,6 +15,7 @@ import type { ClerkPaginatedResponse } from '@clerk/types';
14
15
import type { GetMembersParams } from '@clerk/types' ;
15
16
16
17
import { disableSWRDevtools } from './clerk-swr' ;
18
+
17
19
disableSWRDevtools ( ) ;
18
20
import { useSWR } from './clerk-swr' ;
19
21
import { useClerkInstanceContext , useOrganizationContext , useSessionContext } from './contexts' ;
@@ -22,7 +24,7 @@ import { usePagesOrInfinite, useWithSafeValues } from './usePagesOrInfinite';
22
24
23
25
type UseOrganizationParams = {
24
26
/**
25
- * @deprecated Use invitations instead
27
+ * @deprecated Use ` invitations` instead
26
28
*/
27
29
invitationList ?: GetPendingInvitationsParams ;
28
30
/**
@@ -50,7 +52,7 @@ type UseOrganizationParams = {
50
52
51
53
invitations ?:
52
54
| true
53
- | ( GetMembersParams & {
55
+ | ( GetInvitationsParams & {
54
56
infinite ?: boolean ;
55
57
keepPreviousData ?: boolean ;
56
58
} ) ;
@@ -60,6 +62,9 @@ type UseOrganizationReturn =
60
62
| {
61
63
isLoaded : false ;
62
64
organization : undefined ;
65
+ /**
66
+ * @deprecated Use `invitations` instead
67
+ */
63
68
invitationList : undefined ;
64
69
/**
65
70
* @deprecated Use `memberships` instead
@@ -69,10 +74,14 @@ type UseOrganizationReturn =
69
74
domains : PaginatedResourcesWithDefault < OrganizationDomainResource > ;
70
75
membershipRequests : PaginatedResourcesWithDefault < OrganizationMembershipRequestResource > ;
71
76
memberships : PaginatedResourcesWithDefault < OrganizationMembershipResource > ;
77
+ invitations : PaginatedResourcesWithDefault < OrganizationInvitationResource > ;
72
78
}
73
79
| {
74
80
isLoaded : true ;
75
81
organization : OrganizationResource ;
82
+ /**
83
+ * @deprecated Use `invitations` instead
84
+ */
76
85
invitationList : undefined ;
77
86
/**
78
87
* @deprecated Use `memberships` instead
@@ -82,10 +91,14 @@ type UseOrganizationReturn =
82
91
domains : PaginatedResourcesWithDefault < OrganizationDomainResource > ;
83
92
membershipRequests : PaginatedResourcesWithDefault < OrganizationMembershipRequestResource > ;
84
93
memberships : PaginatedResourcesWithDefault < OrganizationMembershipResource > ;
94
+ invitations : PaginatedResourcesWithDefault < OrganizationInvitationResource > ;
85
95
}
86
96
| {
87
97
isLoaded : boolean ;
88
98
organization : OrganizationResource | null ;
99
+ /**
100
+ * @deprecated Use `invitations` instead
101
+ */
89
102
invitationList : OrganizationInvitationResource [ ] | null | undefined ;
90
103
/**
91
104
* @deprecated Use `memberships` instead
@@ -95,6 +108,7 @@ type UseOrganizationReturn =
95
108
domains : PaginatedResources < OrganizationDomainResource > | null ;
96
109
membershipRequests : PaginatedResources < OrganizationMembershipRequestResource > | null ;
97
110
memberships : PaginatedResources < OrganizationMembershipResource > | null ;
111
+ invitations : PaginatedResources < OrganizationInvitationResource > | null ;
98
112
} ;
99
113
100
114
type UseOrganization = ( params ?: UseOrganizationParams ) => UseOrganizationReturn ;
@@ -121,6 +135,7 @@ export const useOrganization: UseOrganization = params => {
121
135
domains : domainListParams ,
122
136
membershipRequests : membershipRequestsListParams ,
123
137
memberships : membersListParams ,
138
+ invitations : invitationsListParams ,
124
139
} = params || { } ;
125
140
const { organization, lastOrganizationMember, lastOrganizationInvitation } = useOrganizationContext ( ) ;
126
141
const session = useSessionContext ( ) ;
@@ -149,6 +164,14 @@ export const useOrganization: UseOrganization = params => {
149
164
infinite : false ,
150
165
} ) ;
151
166
167
+ const invitationsSafeValues = useWithSafeValues ( invitationsListParams , {
168
+ initialPage : 1 ,
169
+ pageSize : 10 ,
170
+ status : [ 'pending' ] ,
171
+ keepPreviousData : false ,
172
+ infinite : false ,
173
+ } ) ;
174
+
152
175
const clerk = useClerkInstanceContext ( ) ;
153
176
154
177
const shouldFetch = ! ! ( clerk . loaded && session && organization ) ;
@@ -180,6 +203,15 @@ export const useOrganization: UseOrganization = params => {
180
203
role : membersSafeValues . role ,
181
204
} ;
182
205
206
+ const invitationsParams =
207
+ typeof invitationsListParams === 'undefined'
208
+ ? undefined
209
+ : {
210
+ initialPage : invitationsSafeValues . initialPage ,
211
+ pageSize : invitationsSafeValues . pageSize ,
212
+ status : invitationsSafeValues . status ,
213
+ } ;
214
+
183
215
const domains = usePagesOrInfinite < GetDomainsParams , ClerkPaginatedResponse < OrganizationDomainResource > > (
184
216
{
185
217
...domainParams ,
@@ -232,6 +264,22 @@ export const useOrganization: UseOrganization = params => {
232
264
} ,
233
265
) ;
234
266
267
+ const invitations = usePagesOrInfinite < GetInvitationsParams , ClerkPaginatedResponse < OrganizationInvitationResource > > (
268
+ {
269
+ ...invitationsParams ,
270
+ } ,
271
+ organization ?. getInvitations ,
272
+ {
273
+ keepPreviousData : membersSafeValues . keepPreviousData ,
274
+ infinite : membersSafeValues . infinite ,
275
+ enabled : ! ! invitationsParams ,
276
+ } ,
277
+ {
278
+ type : 'invitations' ,
279
+ organizationId : organization ?. id ,
280
+ } ,
281
+ ) ;
282
+
235
283
// Some gymnastics to adhere to the rules of hooks
236
284
// We need to make sure useSWR is called on every render
237
285
const pendingInvitations = ! clerk . loaded
@@ -274,6 +322,7 @@ export const useOrganization: UseOrganization = params => {
274
322
domains : undefinedPaginatedResource ,
275
323
membershipRequests : undefinedPaginatedResource ,
276
324
memberships : undefinedPaginatedResource ,
325
+ invitations : undefinedPaginatedResource ,
277
326
} ;
278
327
}
279
328
@@ -287,6 +336,7 @@ export const useOrganization: UseOrganization = params => {
287
336
domains : null ,
288
337
membershipRequests : null ,
289
338
memberships : null ,
339
+ invitations : null ,
290
340
} ;
291
341
}
292
342
@@ -301,6 +351,7 @@ export const useOrganization: UseOrganization = params => {
301
351
domains : undefinedPaginatedResource ,
302
352
membershipRequests : undefinedPaginatedResource ,
303
353
memberships : undefinedPaginatedResource ,
354
+ invitations : undefinedPaginatedResource ,
304
355
} ;
305
356
}
306
357
@@ -317,6 +368,7 @@ export const useOrganization: UseOrganization = params => {
317
368
domains,
318
369
membershipRequests,
319
370
memberships,
371
+ invitations,
320
372
} ;
321
373
} ;
322
374
0 commit comments