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 | |
| 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')
| -rw-r--r-- | packages/shared-react/package.json | 4 | ||||
| -rw-r--r-- | packages/shared-react/providers/trpc-provider.tsx | 50 |
2 files changed, 53 insertions, 1 deletions
diff --git a/packages/shared-react/package.json b/packages/shared-react/package.json index 46a2adb5..5e0a1d23 100644 --- a/packages/shared-react/package.json +++ b/packages/shared-react/package.json @@ -5,7 +5,9 @@ "private": true, "dependencies": { "@hoarder/trpc": "workspace:^0.1.0", - "@tanstack/react-query": "^5.24.8" + "@tanstack/react-query": "^5.24.8", + "superjson": "^2.2.1", + "@trpc/client": "11.0.0-next-beta.308" }, "devDependencies": { "@hoarder/eslint-config": "workspace:^0.2.0", 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> + ); +} |
