Kyoo/front/src/providers/index.tsx
2025-06-07 19:32:57 +02:00

47 lines
1.5 KiB
TypeScript

import { HydrationBoundary, QueryClientProvider } from "@tanstack/react-query";
import { getServerData } from "one";
import { type ReactNode, useState } from "react";
// import { useUserTheme } from "@kyoo/models";
import { ThemeSelector } from "~/primitives/theme";
import { createQueryClient } from "~/query";
import { AccountProvider } from "./account-provider";
import { ErrorConsumer } from "./error-consumer";
import { ErrorProvider } from "./error-provider";
import { TranslationsProvider } from "./translations.native";
const QueryProvider = ({ children }: { children: ReactNode }) => {
const [queryClient] = useState(() => createQueryClient());
return (
<QueryClientProvider client={queryClient}>
<HydrationBoundary state={getServerData("queryState")}>{children}</HydrationBoundary>
</QueryClientProvider>
);
};
const ThemeProvider = ({ children }: { children: ReactNode }) => {
// TODO: change "auto" and use the user's theme cookie
const userTheme = "auto"; //useUserTheme("auto");
return (
<ThemeSelector theme={userTheme} font={{ normal: "inherit" }}>
{children}
</ThemeSelector>
);
};
export const Providers = ({ children }: { children: ReactNode }) => {
return (
<QueryProvider>
<ThemeProvider>
<ErrorProvider>
<AccountProvider>
<TranslationsProvider>
<ErrorConsumer scope="root">{children}</ErrorConsumer>
</TranslationsProvider>
</AccountProvider>
</ErrorProvider>
</ThemeProvider>
</QueryProvider>
);
};