diff options
| author | MohamedBassem <me@mbassem.com> | 2024-04-09 19:05:28 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-04-09 19:05:28 +0100 |
| commit | f696d33b645c53369ec5833593bdc77c9fb7cea9 (patch) | |
| tree | bde841a66187af0581831316a4b90895db1690a1 /packages/shared-react/providers | |
| parent | 5ab6c3304b4a2d055767b8195fac9c9eec776d16 (diff) | |
| download | karakeep-f696d33b645c53369ec5833593bdc77c9fb7cea9.tar.zst | |
fix: Delete the API key on logout from phone or extension
Diffstat (limited to 'packages/shared-react/providers')
| -rw-r--r-- | packages/shared-react/providers/trpc-provider.tsx | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/shared-react/providers/trpc-provider.tsx b/packages/shared-react/providers/trpc-provider.tsx new file mode 100644 index 00000000..2cd8661b --- /dev/null +++ b/packages/shared-react/providers/trpc-provider.tsx @@ -0,0 +1,50 @@ +import { useMemo } from "react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { httpBatchLink } from "@trpc/client"; +import superjson from "superjson"; + +import { api } from "../trpc"; + +interface Settings { + apiKey?: string; + address: string; +} + +function getTRPCClient(settings: Settings) { + return api.createClient({ + links: [ + httpBatchLink({ + url: `${settings.address}/api/trpc`, + headers() { + return { + Authorization: settings.apiKey + ? `Bearer ${settings.apiKey}` + : undefined, + }; + }, + transformer: superjson, + }), + ], + }); +} + +export function TRPCProvider({ + settings, + children, +}: { + settings: Settings; + children: React.ReactNode; +}) { + const queryClient = useMemo(() => new QueryClient(), [settings]); + const trpcClient = useMemo(() => getTRPCClient(settings), [settings]); + + return ( + <api.Provider + key={settings.address} + client={trpcClient} + queryClient={queryClient} + > + <QueryClientProvider client={queryClient}>{children}</QueryClientProvider> + </api.Provider> + ); +} |
