aboutsummaryrefslogtreecommitdiffstats
path: root/apps/mobile/lib/providers.tsx
blob: c2a573f51f6a71f23515d039763f54e99f40d944 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { useEffect } from "react";
import { SafeAreaProvider } from "react-native-safe-area-context";
import FullPageSpinner from "@/components/ui/FullPageSpinner";
import { ToastProvider } from "@/components/ui/Toast";

import { TRPCProvider } from "@hoarder/shared-react/providers/trpc-provider";

import useAppSettings from "./settings";

export function Providers({ children }: { children: React.ReactNode }) {
  const { settings, isLoading, load } = useAppSettings();

  useEffect(() => {
    load();
  }, []);

  if (isLoading) {
    // Don't render anything if the settings still hasn't been loaded
    return <FullPageSpinner />;
  }

  return (
    <SafeAreaProvider>
      <TRPCProvider settings={settings}>
        <ToastProvider>{children}</ToastProvider>
      </TRPCProvider>
    </SafeAreaProvider>
  );
}