Skip to content

Commit b3f64bf

Browse files
authored
Merge pull request #40 from Gusto/ar/global-headers
[GWS-4127] Pass headers into the ReactSDKProvider
2 parents 40f6f08 + ad56877 commit b3f64bf

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed
Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,49 @@
1+
import { HTTPClient } from "./lib/http.js";
12
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
23
import { GustoEmbeddedProvider } from "./react-query/index.js";
34
import { GustoEmbeddedCore } from "./core.js";
45

56
//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";
78

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+
}
1527

28+
return fetch(request);
29+
},
30+
});
1631

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+
);
2247
}
2348

24-
export default { ReactSDKProvider }
49+
export default { ReactSDKProvider };

0 commit comments

Comments
 (0)