1- import type { ReactElement } from "react" ;
1+ import type { ReactElement , ReactNode } from "react" ;
22import { HeroUIProvider } from "@heroui/react" ;
33import { ToastProvider } from "@heroui/toast" ;
44import { validateCrypto } from "@package/react" ;
55import { QueryClient , QueryClientProvider } from "@tanstack/react-query" ;
66import { AppLocales } from "./AppLocales" ;
7+ import { AuthInitializer } from "./auth/AuthInitializer" ;
78import { AuthProvider } from "./auth/AuthProvider" ;
89import { PwaProviderModule } from "~/components/modules/pwa-provider-module/PwaProviderModule" ;
910
1011const queryClient = new QueryClient ( ) ;
1112
1213export interface AppProvidersProps {
13- children : ReactElement ;
14+ children : ( authStatus : "authenticated" | "unauthenticated" ) => ReactNode ;
15+ loadingFallback ?: ReactNode ;
1416}
1517
16- export function AppProviders ( { children } : AppProvidersProps ) : ReactElement {
18+ export function AppProviders ( { children, loadingFallback } : AppProvidersProps ) : ReactElement {
1719 // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1820 typeof window !== "undefined" && validateCrypto ( ) ;
1921 return (
@@ -22,7 +24,9 @@ export function AppProviders({ children }: AppProvidersProps): ReactElement {
2224 < AppLocales >
2325 < PwaProviderModule >
2426 < QueryClientProvider client = { queryClient } >
25- < AuthProvider > { children } </ AuthProvider >
27+ < AuthInitializer fallback = { loadingFallback } >
28+ { ( authStatus ) => < AuthProvider initialAuthStatus = { authStatus } > { children ( authStatus ) } </ AuthProvider > }
29+ </ AuthInitializer >
2630 </ QueryClientProvider >
2731 </ PwaProviderModule >
2832 </ AppLocales >
0 commit comments