This repository has been archived by the owner on Mar 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 7
/
App.tsx
73 lines (66 loc) · 2 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
67
68
69
70
71
72
73
import React, { useEffect, useState } from 'react';
import codePush from 'react-native-code-push';
import notifee, { EventType } from '@notifee/react-native';
import { AppProvider } from './src/context/AppContext';
import { RootNavigator } from './src/RootNavigator';
import { notifications } from 'controllers/notifications';
import { useIsMounted } from 'hooks/useIsMounted';
import { BalanceProvider } from 'context/BalanceContext';
import { UsdPriceProvider } from 'context/UsdPriceContext';
import { TransactionsProvider } from 'store/transactions';
import { StatusBar } from 'react-native';
import { DarkTheme } from '@react-navigation/native';
const App: React.FC = () => {
const isMounted = useIsMounted();
const [loading, setLoading] = useState(true);
useEffect(() => {
notifee
.getInitialNotification()
.then(initialNotification => {
if (isMounted() && initialNotification) {
notifications.handleEvents({
type:
initialNotification.pressAction?.id !== 'default'
? EventType.ACTION_PRESS
: EventType.PRESS,
detail: initialNotification,
});
}
})
.finally(() => {
if (isMounted()) {
setLoading(false);
}
});
}, [isMounted]);
useEffect(() => {
return notifee.onForegroundEvent(notifications.handleEvents);
}, []);
if (loading) {
return null;
}
return (
<>
<StatusBar
backgroundColor={DarkTheme.colors.background}
barStyle="light-content"
/>
<UsdPriceProvider>
<BalanceProvider>
<TransactionsProvider>
<AppProvider>
<RootNavigator />
</AppProvider>
</TransactionsProvider>
</BalanceProvider>
</UsdPriceProvider>
</>
);
};
export default __DEV__
? App
: codePush({
updateDialog: true,
checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
installMode: codePush.InstallMode.IMMEDIATE,
})(App);