aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes.js')
-rw-r--r--src/routes.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/routes.js b/src/routes.js
new file mode 100644
index 000000000..9986cdde5
--- /dev/null
+++ b/src/routes.js
@@ -0,0 +1,100 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4import {
5 Router, Route, IndexRedirect,
6} from 'react-router';
7
8import AppLayoutContainer from './containers/layout/AppLayoutContainer';
9import SettingsWindow from './containers/settings/SettingsWindow';
10import RecipesScreen from './containers/settings/RecipesScreen';
11import ServicesScreen from './containers/settings/ServicesScreen';
12import EditServiceScreen from './containers/settings/EditServiceScreen';
13import AccountScreen from './containers/settings/AccountScreen';
14import TeamScreen from './containers/settings/TeamScreen';
15import EditUserScreen from './containers/settings/EditUserScreen';
16import EditSettingsScreen from './containers/settings/EditSettingsScreen';
17import InviteSettingsScreen from './containers/settings/InviteScreen';
18import SupportFerdiScreen from './containers/settings/SupportScreen';
19import WelcomeScreen from './containers/auth/WelcomeScreen';
20import LoginScreen from './containers/auth/LoginScreen';
21import LockedScreen from './containers/auth/LockedScreen';
22import PasswordScreen from './containers/auth/PasswordScreen';
23import ChangeServerScreen from './containers/auth/ChangeServerScreen';
24import SignupScreen from './containers/auth/SignupScreen';
25import ImportScreen from './containers/auth/ImportScreen';
26import PricingScreen from './containers/auth/PricingScreen';
27import InviteScreen from './containers/auth/InviteScreen';
28import AuthLayoutContainer from './containers/auth/AuthLayoutContainer';
29import SubscriptionPopupScreen from './containers/subscription/SubscriptionPopupScreen';
30import WorkspacesScreen from './features/workspaces/containers/WorkspacesScreen';
31import EditWorkspaceScreen from './features/workspaces/containers/EditWorkspaceScreen';
32import { WORKSPACES_ROUTES } from './features/workspaces';
33import AnnouncementScreen from './features/announcements/components/AnnouncementScreen';
34import { ANNOUNCEMENTS_ROUTES } from './features/announcements';
35
36import SettingsStore from './stores/SettingsStore';
37
38export default @inject('stores', 'actions') @observer class Routes extends Component {
39 render() {
40 const {
41 locked,
42 lockingFeatureEnabled,
43 } = this.props.stores.settings.app;
44
45 const { history } = this.props;
46
47 if (lockingFeatureEnabled && locked) {
48 return (
49 <LockedScreen />
50 );
51 }
52
53 return (
54 <Router history={history}>
55 <Route path="/" component={AppLayoutContainer}>
56 <Route path={ANNOUNCEMENTS_ROUTES.TARGET} component={AnnouncementScreen} />
57 <Route path="/settings" component={SettingsWindow}>
58 <IndexRedirect to="/settings/recipes" />
59 <Route path="/settings/recipes" component={RecipesScreen} />
60 <Route path="/settings/recipes/:filter" component={RecipesScreen} />
61 <Route path="/settings/services" component={ServicesScreen} />
62 <Route path="/settings/services/:action/:id" component={EditServiceScreen} />
63 <Route path={WORKSPACES_ROUTES.ROOT} component={WorkspacesScreen} />
64 <Route path={WORKSPACES_ROUTES.EDIT} component={EditWorkspaceScreen} />
65 <Route path="/settings/user" component={AccountScreen} />
66 <Route path="/settings/user/edit" component={EditUserScreen} />
67 <Route path="/settings/team" component={TeamScreen} />
68 <Route path="/settings/app" component={EditSettingsScreen} />
69 <Route path="/settings/invite" component={InviteSettingsScreen} />
70 <Route path="/settings/support" component={SupportFerdiScreen} />
71 </Route>
72 </Route>
73 <Route path="/auth" component={AuthLayoutContainer}>
74 <IndexRedirect to="/auth/welcome" />
75 <Route path="/auth/welcome" component={WelcomeScreen} />
76 <Route path="/auth/login" component={LoginScreen} />
77 <Route path="/auth/server" component={ChangeServerScreen} />
78 <Route path="/auth/signup">
79 <IndexRedirect to="/auth/signup/form" />
80 <Route path="/auth/signup/form" component={SignupScreen} />
81 <Route path="/auth/signup/pricing" component={PricingScreen} />
82 <Route path="/auth/signup/import" component={ImportScreen} />
83 <Route path="/auth/signup/invite" component={InviteScreen} />
84 </Route>
85 <Route path="/auth/password" component={PasswordScreen} />
86 <Route path="/auth/logout" component={LoginScreen} />
87 </Route>
88 <Route path="/payment/:url" component={SubscriptionPopupScreen} />
89 <Route path="*" component={AppLayoutContainer} />
90 </Router>
91 );
92 }
93}
94
95Routes.wrappedComponent.propTypes = {
96 stores: PropTypes.shape({
97 settings: PropTypes.instanceOf(SettingsStore).isRequired,
98 }).isRequired,
99 history: PropTypes.any.isRequired,
100};