-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathApp.tsx
66 lines (57 loc) · 2.28 KB
/
App.tsx
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Components
import Navbar from "./shared/components/navbar/navbar";
import StaticUIManager from "./shared/components/staticUIManager";
import AppBackground from "./shared/components/appBackground/particleNetwork";
// Library
import * as Font from "expo-font";
import { useState, useEffect } from "react";
import { View, ScrollView, Platform, StatusBar, NativeEventEmitter } from "react-native";
import useSession from "./shared/hooks/useSession";
import { removeTemplateTags } from "./shared/library/devTools";
import * as serviceWorkerRegistration from "./src/serviceWorkerRegistration";
// Views
import Loading from "./shared/views/loading/view";
import ViewManager from './views/viewManager';
const nativeEvent = new NativeEventEmitter();
const App = () => {
const [session, reloadSession] = useSession();
const [appLoaded, setAppLoaded] = useState(false);
const [fontsLoaded, setFontsLoaded] = useState(false);
useEffect(() => {
if (!appLoaded) {
reloadSession();
removeTemplateTags();
setAppLoaded(true);
}
if (!fontsLoaded) Font.loadAsync({
"Montserrat": require("./shared/assets/font/Montserrat.ttf"),
"Metro": require("./shared/assets/font/Metropolis-Regular.otf"),
"Metro-Thin": require("./shared/assets/font/Metropolis-Thin.otf"),
"Metro-Bold": require("./shared/assets/font/Metropolis-Bold.otf"),
"Metro-Light": require("./shared/assets/font/Metropolis-Light.otf"),
"Metro-Italic": require("./shared/assets/font/Metropolis-RegularItalic.otf"),
}).then(() => {
setFontsLoaded(true);
});
const reloadAppListener = nativeEvent.addListener('reloadApp', () => {
setAppLoaded(false);
});
return () => reloadAppListener.remove();
}, [fontsLoaded, appLoaded]);
return <>
<StatusBar barStyle="light-content" backgroundColor="#202029"/>
<AppBackground/>
{
fontsLoaded && appLoaded ? <View>
<Navbar session={session}/>
<ViewManager session={session}/>
<StaticUIManager session={session}/>
</View> : <>
<Loading fontFamily={Platform.OS === "web" || fontsLoaded ? "Metro" : "serif"}/>
</>
}
</>
};
if (process.env.REACT_APP_PWA === "true") serviceWorkerRegistration.register();
else serviceWorkerRegistration.unregister();
export default App;