supermemory/apps/desktop/app/providers.tsx
2026-06-22 15:23:10 -07:00

44 lines
1.1 KiB
TypeScript

"use client"
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
import { setTokenProvider } from "@lib/token-provider"
import { Toaster } from "@ui/components/sonner"
import { ThemeProvider } from "next-themes"
import { type ReactNode, useEffect, useState } from "react"
import { getStoredToken } from "@/lib/auth"
export function Providers({ children }: { children: ReactNode }) {
// One QueryClient for the app's lifetime; lazy init avoids re-creating it on
// every render (and on Fast Refresh in dev).
const [queryClient] = useState(
() =>
new QueryClient({
defaultOptions: {
queries: {
refetchOnWindowFocus: false,
staleTime: 60 * 1000,
},
},
}),
)
useEffect(() => {
setTokenProvider(getStoredToken)
}, [])
// The app is dark-only, matching apps/web (forcedTheme="dark").
return (
<ThemeProvider
attribute="class"
defaultTheme="dark"
enableSystem={false}
forcedTheme="dark"
disableTransitionOnChange
>
<QueryClientProvider client={queryClient}>
{children}
<Toaster />
</QueryClientProvider>
</ThemeProvider>
)
}