-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.tsx
More file actions
52 lines (45 loc) · 1.71 KB
/
App.tsx
File metadata and controls
52 lines (45 loc) · 1.71 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import React, { useEffect } from "react";
import { StatusBar } from "expo-status-bar";
import Router from "./src/pages";
import { ActiveTabContextProvider } from "./src/context/ActiveTab";
import { LoadingStockDataContextProvider } from "./src/context/LoadingStockData";
import useTheme, { ThemeContextProvider, LoadSavedTheme } from "./src/context/Theme";
import useSettings, { SettingsContextProvider, LoadSavedSettings } from "./src/context/Settings";
import useLoadingStockData from "./src/context/LoadingStockData";
import GoogleFinanceAPIService from "./src/services/GoogleFinanceAPI";
if (__DEV__) {
import("./dev/ReactotronConfig");
}
function SettingsLoader({ children }: { children: React.ReactNode }) {
const [theme, themeName, setTheme] = useTheme();
const [settings, setSettings] = useSettings();
const [_, setIsLoading] = useLoadingStockData();
useEffect(() => {
LoadSavedTheme([theme, themeName, setTheme]);
LoadSavedSettings([settings, setSettings]).then((loadedSettings) => {
if (!loadedSettings.loadDataOnInit || loadedSettings.GoogleFinanceURL === "") return;
GoogleFinanceAPIService.getAllData(setIsLoading, loadedSettings.GoogleFinanceURL);
});
}, []);
return (
<React.Fragment>
<StatusBar style={theme.statusBar} />
{children}
</React.Fragment>
);
}
export default function App() {
return (
<SettingsContextProvider>
<ThemeContextProvider>
<ActiveTabContextProvider>
<LoadingStockDataContextProvider>
<SettingsLoader>
<Router />
</SettingsLoader>
</LoadingStockDataContextProvider>
</ActiveTabContextProvider>
</ThemeContextProvider>
</SettingsContextProvider>
);
}