1
1
import type { EnvironmentResource , ForPayerType } from '@clerk/types' ;
2
- import { useQuery , useQueryClient } from '@tanstack/react-query' ;
3
- import { useCallback , useMemo } from 'react' ;
2
+ import { useQuery } from '@tanstack/react-query' ;
3
+ import { useCallback , useEffect , useMemo , useState } from 'react' ;
4
4
5
5
import { eventMethodCalled } from '../../telemetry/events' ;
6
6
import { useSWR } from '../clerk-swr' ;
@@ -80,6 +80,26 @@ export const useSubscriptionPrev = (params?: UseSubscriptionParams) => {
80
80
} ;
81
81
} ;
82
82
83
+ const useClerkQueryClient = ( ) => {
84
+ const clerk = useClerkInstanceContext ( ) ;
85
+ const [ queryStatus , setQueryStatus ] = useState ( 'loading' ) ;
86
+ useEffect ( ( ) => {
87
+ // @ts -expect-error - queryClientStatus is not typed
88
+ clerk . on ( 'queryClientStatus' , setQueryStatus ) ;
89
+ return ( ) => {
90
+ // @ts -expect-error - queryClientStatus is not typed
91
+ clerk . off ( 'queryClientStatus' , setQueryStatus ) ;
92
+ } ;
93
+ } , [ clerk ] ) ;
94
+
95
+ const queryClient = useMemo ( ( ) => {
96
+ // @ts -expect-error - __internal_queryClient is not typed
97
+ return clerk . __internal_queryClient ;
98
+ } , [ queryStatus , clerk . status ] ) ;
99
+
100
+ return queryClient ;
101
+ } ;
102
+
83
103
export const useSubscription = ( params ?: UseSubscriptionParams ) => {
84
104
useAssertWrappedByClerkProvider ( hookName ) ;
85
105
@@ -99,7 +119,9 @@ export const useSubscription = (params?: UseSubscriptionParams) => {
99
119
? environment ?. commerceSettings . billing . organization . enabled
100
120
: environment ?. commerceSettings . billing . user . enabled ;
101
121
102
- const queryClient = useQueryClient ( ) ;
122
+ const queryClient = useClerkQueryClient ( ) ;
123
+ // console.log('useInfiniteQuery', useInfiniteQuery);
124
+ // console.log('useInfiniteQuery', useMutation);
103
125
104
126
const queryKey = useMemo ( ( ) => {
105
127
return [
@@ -111,20 +133,23 @@ export const useSubscription = (params?: UseSubscriptionParams) => {
111
133
] ;
112
134
} , [ user ?. id , isOrganization , organization ?. id ] ) ;
113
135
114
- const query = useQuery ( {
115
- queryKey,
116
- queryFn : ( { queryKey } ) => {
117
- const obj = queryKey [ 1 ] as {
118
- args : {
119
- orgId ?: string ;
136
+ const query = useQuery (
137
+ {
138
+ queryKey,
139
+ queryFn : ( { queryKey } ) => {
140
+ const obj = queryKey [ 1 ] as {
141
+ args : {
142
+ orgId ?: string ;
143
+ } ;
120
144
} ;
121
- } ;
122
- return clerk . billing . getSubscription ( obj . args ) ;
145
+ return clerk . billing . getSubscription ( obj . args ) ;
146
+ } ,
147
+ staleTime : 1_0000 * 60 ,
148
+ enabled : Boolean ( user ?. id && billingEnabled ) && clerk . status === 'ready' ,
149
+ // placeholderData
123
150
} ,
124
- staleTime : 1_0000 * 60 ,
125
- enabled : Boolean ( user ?. id && billingEnabled ) && clerk . status === 'ready' ,
126
- // placeholderData
127
- } ) ;
151
+ queryClient ,
152
+ ) ;
128
153
129
154
const revalidate = useCallback ( ( ) => queryClient . invalidateQueries ( { queryKey } ) , [ queryClient , queryKey ] ) ;
130
155
0 commit comments