1
+ import { HTTPClient } from "./lib/http.js" ;
1
2
import { QueryClient , QueryClientProvider } from "@tanstack/react-query" ;
2
3
import { GustoEmbeddedProvider } from "./react-query/index.js" ;
3
4
import { GustoEmbeddedCore } from "./core.js" ;
4
5
5
6
//Reexporting useQueryClient to be available in consumer application without direct react-query dependency
6
- export { useQueryClient } from "@tanstack/react-query"
7
+ export { useQueryClient } from "@tanstack/react-query" ;
7
8
8
- export function ReactSDKProvider ( { url, children } : { url : string , children : React . ReactNode } ) {
9
- const queryClient = new QueryClient ( ) ;
10
- const gustoClient = new GustoEmbeddedCore ( {
11
- serverURL : url ,
12
- } , )
13
- queryClient . setQueryDefaults ( [ '@gusto/embedded-api' ] , { retry : false } )
14
- queryClient . setMutationDefaults ( [ '@gusto/embedded-api' ] , { retry : false } )
9
+ export function ReactSDKProvider ( {
10
+ url,
11
+ headers,
12
+ children,
13
+ } : {
14
+ url : string ;
15
+ headers ?: Headers ;
16
+ children : React . ReactNode ;
17
+ } ) {
18
+ const httpClientWithHeaders = new HTTPClient ( {
19
+ fetcher : async ( request ) => {
20
+ if ( request instanceof Request && headers ) {
21
+ headers . forEach ( ( headerValue , headerName ) => {
22
+ if ( headerValue ) {
23
+ request . headers . set ( headerName , headerValue ) ;
24
+ }
25
+ } ) ;
26
+ }
15
27
28
+ return fetch ( request ) ;
29
+ } ,
30
+ } ) ;
16
31
17
- return ( < QueryClientProvider client = { queryClient } >
18
- < GustoEmbeddedProvider client = { gustoClient } >
19
- { children }
20
- </ GustoEmbeddedProvider >
21
- </ QueryClientProvider > )
32
+ const queryClient = new QueryClient ( ) ;
33
+ const gustoClient = new GustoEmbeddedCore ( {
34
+ serverURL : url ,
35
+ httpClient : httpClientWithHeaders ,
36
+ } ) ;
37
+ queryClient . setQueryDefaults ( [ "@gusto/embedded-api" ] , { retry : false } ) ;
38
+ queryClient . setMutationDefaults ( [ "@gusto/embedded-api" ] , { retry : false } ) ;
39
+
40
+ return (
41
+ < QueryClientProvider client = { queryClient } >
42
+ < GustoEmbeddedProvider client = { gustoClient } >
43
+ { children }
44
+ </ GustoEmbeddedProvider >
45
+ </ QueryClientProvider >
46
+ ) ;
22
47
}
23
48
24
- export default { ReactSDKProvider }
49
+ export default { ReactSDKProvider } ;
0 commit comments