-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.jsx
88 lines (77 loc) · 1.71 KB
/
App.jsx
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import React, { Fragment, useEffect } from 'react';
import {
HashRouter,
Switch,
Route,
Redirect
} from 'react-router-dom';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
// Core
import { Sidebar } from '../Sidebar';
// Routes
import {
PrivateRoutes,
LoadingRoute,
CreateProfileRoute
} from '../../routes';
// Hooks
import {
useScrollbar,
useSubscribeSystem,
useSubscribeUser,
useSubscribeLibrary
} from '../../hooks';
// Paths
import {
homePath,
loadingPath,
createProfilePath
} from '../../paths';
// Actions
import { getCachedProfile } from '../../api/userApi';
const App = ({ pendingCache, isCached }) => {
useEffect(() => {
getCachedProfile();
}, []);
useScrollbar();
useSubscribeSystem();
useSubscribeUser();
useSubscribeLibrary();
return (
<HashRouter>
<Switch>
{pendingCache ? (
<Fragment>
<Route {...LoadingRoute} />
<Redirect to={loadingPath} />
</Fragment>
) : (
isCached ? (
<Fragment>
<Sidebar />
{PrivateRoutes.map(route => <Route key={route.key} {...route} />)}
<Redirect to={homePath} />
</Fragment>
) : (
<Fragment>
<Route {...CreateProfileRoute} />
<Redirect to={createProfilePath} />
</Fragment>
)
)}
</Switch>
</HashRouter>
);
};
App.propTypes = {
isCached: PropTypes.bool.isRequired,
pendingCache: PropTypes.bool.isRequired
};
const mapStateToProps = state => ({
isCached: state.system.connectedCache,
pendingCache: state.system.pendingCache
});
export default connect(
mapStateToProps
)(App);