2021-04-04 08:28:58 +00:00
|
|
|
import 'react-native-gesture-handler';
|
2021-11-01 16:17:38 +00:00
|
|
|
import React, { useEffect, useMemo, useRef } from 'react';
|
2021-04-04 09:11:15 +00:00
|
|
|
import { ApolloProvider } from '@apollo/client';
|
2021-04-04 08:28:58 +00:00
|
|
|
import RNBootSplash from 'react-native-bootsplash';
|
2021-04-05 09:37:33 +00:00
|
|
|
import { Root, StyleProvider } from 'native-base';
|
2021-04-04 09:11:15 +00:00
|
|
|
import { createClient } from 'libs/graphql';
|
2021-04-04 08:28:58 +00:00
|
|
|
import { API_URI } from 'config/api';
|
2021-04-04 09:11:15 +00:00
|
|
|
import Navigation from './Navigation';
|
2021-04-04 12:31:01 +00:00
|
|
|
import { createTheme, variables } from '../libs/native-base';
|
2021-04-05 08:01:46 +00:00
|
|
|
import { SavedQualificationsProvider } from '../libs/savedqualifications';
|
2021-04-04 08:28:58 +00:00
|
|
|
|
2021-04-05 08:01:46 +00:00
|
|
|
const BaseApp = () => {
|
2021-04-04 08:28:58 +00:00
|
|
|
useEffect(() => {
|
|
|
|
RNBootSplash.hide({ fade: true });
|
|
|
|
}, []);
|
|
|
|
|
2021-04-05 08:01:46 +00:00
|
|
|
return <Navigation />;
|
|
|
|
};
|
|
|
|
|
|
|
|
const App = () => {
|
2021-11-01 16:17:38 +00:00
|
|
|
const theme = useMemo(() => {
|
|
|
|
return createTheme(variables);
|
|
|
|
}, []);
|
|
|
|
const client = useMemo(() => {
|
|
|
|
return createClient(API_URI);
|
|
|
|
}, []);
|
2021-04-05 08:01:46 +00:00
|
|
|
|
2021-04-04 08:28:58 +00:00
|
|
|
return (
|
2021-04-04 11:36:35 +00:00
|
|
|
<ApolloProvider client={client}>
|
2021-04-04 12:31:01 +00:00
|
|
|
<StyleProvider style={theme}>
|
2021-04-05 09:37:33 +00:00
|
|
|
<Root>
|
|
|
|
<SavedQualificationsProvider>
|
|
|
|
<BaseApp />
|
|
|
|
</SavedQualificationsProvider>
|
|
|
|
</Root>
|
2021-04-04 12:31:01 +00:00
|
|
|
</StyleProvider>
|
2021-04-04 11:36:35 +00:00
|
|
|
</ApolloProvider>
|
2021-04-04 08:28:58 +00:00
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default App;
|