-
Notifications
You must be signed in to change notification settings - Fork 2
/
routes.js
76 lines (68 loc) · 3.22 KB
/
routes.js
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
/**
* Copyright Morpheo Org. 2017
*
* contact@morpheo.co
*
* This software is part of the Morpheo project, an open-source machine
* learning platform.
*
* This software is governed by the CeCILL license, compatible with the
* GNU GPL, under French law and abiding by the rules of distribution of
* free software. You can use, modify and/ or redistribute the software
* under the terms of the CeCILL license as circulated by CEA, CNRS and
* INRIA at the following URL "http://www.cecill.info".
*
* As a counterpart to the access to the source code and rights to copy,
* modify and redistribute granted by the license, users are provided only
* with a limited warranty and the software's author, the holder of the
* economic rights, and the successive licensors have only limited
* liability.
*
* In this respect, the user's attention is drawn to the risks associated
* with loading, using, modifying and/or developing or reproducing the
* software by the user in light of its specific status of free software,
* that may mean that it is complicated to manipulate, and that also
* therefore means that it is reserved for developers and experienced
* professionals having in-depth computer knowledge. Users are therefore
* encouraged to load and test the software's suitability as regards their
* requirements in conditions enabling the security of their systems and/or
* data to be ensured and, more generally, to use and operate it in the
* same conditions as regards security.
*
* The fact that you are presently reading this means that you have had
* knowledge of the CeCILL license and that you accept its terms.
*/
import React from 'react';
import universal from 'react-universal-component';
import {injectReducer} from 'redux-injector';
import {injectSaga} from 'redux-sagas-injector';
import PulseLoader from '../common/components/presentation/loaders/pulseLoader';
import {connect} from 'react-redux';
import localStorage from '../../../../common/localStorage';
import theme from '../../../css/variables';
// second way with onLoad
const Universal = universal(import('./preload'), {
loading: <div>Loading notebook...</div>,
onLoad: (module) => {
injectSaga('notebook', module.notebookSagas);
injectReducer('notebook', module.notebookReducer);
injectReducer('settings', module.settingsReducer(localStorage));
// Configure hot module replacement for the reducer
if (process.env.NODE_ENV !== 'production') {
if (module.hot) {
module.hot.accept('./reducers/index', () => import('./reducers/index').then((module) => {
injectReducer('notebook', module.default);
}));
module.hot.accept('../settings/reducer', () => import('../settings/reducer').then((module) => {
injectReducer('settings', module.default(localStorage));
}));
}
}
},
// key: 'default' -- this is the default, and what the component will be, i.e. module.default
});
const mapStateToProps = ({user}, ownProps) => ({user, ...ownProps});
export default connect(mapStateToProps)((props) => {
const {user} = props;
return user && !user.authenticated ? null : <Universal />;
});