mirror of
https://github.com/rjNemo/devbook_ts
synced 2026-06-09 20:16:43 +00:00
* 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
48 lines
1.1 KiB
TypeScript
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;
|