devbook_ts/src/App.tsx
Ruidy 7333e3474b
Redux (#5)
* install redux and set authSlice

* connect navBar to the sotre

* create User type

* install react-redux-firebase

* bind to firebase

* connect App to firebase auth; display splash screen while loading auth state

* install firestore

* install firestore

* refactor tests

* edit env variables in ci

* refactor tests

* refactor tests

* edit env variables in ci
2020-05-13 19:40:23 +02:00

48 lines
1.1 KiB
TypeScript

import React, {FC} from 'react';
// Routing
import {BrowserRouter} from 'react-router-dom';
import Router from './router/Router';
import NavBar from './components/NavBar';
// Redux
import {Provider, useSelector} from 'react-redux';
import store from './store';
// Firebase
import {ReactReduxFirebaseProvider, isLoaded} from 'react-redux-firebase';
import rrfProps from './store/firebase/config';
import {selectAuthState} from './store/firebase';
/**
* Main App container
* Redux provides state management
* RRF to bind to Firebase
* */
const App: FC = () => {
return (
<Provider store={store}>
<ReactReduxFirebaseProvider {...rrfProps}>
<BrowserRouter>
<AuthApp />
</BrowserRouter>
</ReactReduxFirebaseProvider>
</Provider>
);
};
/**
* Display a loading screen while fetching authentication state
*/
const AuthApp: FC = () => {
const auth = useSelector(selectAuthState);
if (!isLoaded(auth)) {
// TODO: insert Splash Screen here
return <div>Loading...</div>;
}
return (
<>
<NavBar />
<Router />
</>
);
};
export default App;