2021-02-01 11:01:09 +00:00
|
|
|
import React, { Suspense, lazy /*useEffect*/ } from "react";
|
2020-10-16 13:20:12 +00:00
|
|
|
import { Router, Route, Switch } from "react-router-dom";
|
|
|
|
import { connect } from "react-redux";
|
|
|
|
import {
|
|
|
|
store as CommonStore,
|
|
|
|
history,
|
|
|
|
PrivateRoute,
|
|
|
|
PublicRoute,
|
|
|
|
Login,
|
|
|
|
Error404,
|
|
|
|
Offline,
|
|
|
|
ComingSoon,
|
|
|
|
NavMenu,
|
|
|
|
Main,
|
|
|
|
utils,
|
|
|
|
toastr,
|
|
|
|
} from "asc-web-common";
|
|
|
|
import Home from "./components/pages/Home";
|
2021-02-02 09:55:14 +00:00
|
|
|
import { inject } from "mobx-react";
|
2020-10-16 13:20:12 +00:00
|
|
|
|
|
|
|
const About = lazy(() => import("./components/pages/About"));
|
|
|
|
const Confirm = lazy(() => import("./components/pages/Confirm"));
|
|
|
|
const Settings = lazy(() => import("./components/pages/Settings"));
|
|
|
|
const Wizard = lazy(() => import("./components/pages/Wizard"));
|
|
|
|
const Payments = lazy(() => import("./components/pages/Payments"));
|
2021-01-15 08:52:29 +00:00
|
|
|
const ThirdPartyResponse = lazy(() => import("./components/pages/ThirdParty"));
|
2020-10-16 13:20:12 +00:00
|
|
|
const {
|
|
|
|
setIsLoaded,
|
2021-02-01 08:45:26 +00:00
|
|
|
//getUser,
|
2021-02-02 06:48:57 +00:00
|
|
|
//getPortalSettings,
|
2021-01-29 15:06:02 +00:00
|
|
|
//getModules,
|
2020-12-07 08:11:04 +00:00
|
|
|
getIsAuthenticated,
|
2020-10-16 13:20:12 +00:00
|
|
|
} = CommonStore.auth.actions;
|
2021-02-02 06:48:57 +00:00
|
|
|
//const { userStore, settingsStore } = CommonStore;
|
2020-10-16 13:20:12 +00:00
|
|
|
|
|
|
|
class App extends React.Component {
|
2021-01-15 13:28:08 +00:00
|
|
|
constructor(props) {
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
const pathname = window.location.pathname.toLowerCase();
|
|
|
|
this.isThirdPartyResponse = pathname.indexOf("thirdparty") !== -1;
|
|
|
|
}
|
2021-02-02 09:55:14 +00:00
|
|
|
async componentDidMount() {
|
2020-12-04 08:38:15 +00:00
|
|
|
const {
|
2021-02-02 09:55:14 +00:00
|
|
|
//getPortalSettings,
|
|
|
|
//getUser,
|
2021-01-29 15:06:02 +00:00
|
|
|
//getModules,
|
2021-02-02 14:26:58 +00:00
|
|
|
setIsLoaded,
|
2020-12-07 08:11:04 +00:00
|
|
|
getIsAuthenticated,
|
2021-02-02 09:55:14 +00:00
|
|
|
loadBaseInfo,
|
2020-12-04 08:38:15 +00:00
|
|
|
} = this.props;
|
2020-10-16 13:20:12 +00:00
|
|
|
|
2021-02-02 09:55:14 +00:00
|
|
|
try {
|
|
|
|
const isAuthenticated = await getIsAuthenticated();
|
|
|
|
|
|
|
|
if (isAuthenticated) utils.updateTempContent(isAuthenticated);
|
|
|
|
|
|
|
|
if (this.isThirdPartyResponse) {
|
|
|
|
setIsLoaded();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
await loadBaseInfo();
|
|
|
|
|
|
|
|
utils.updateTempContent();
|
|
|
|
setIsLoaded();
|
|
|
|
|
|
|
|
// const requests = [];
|
|
|
|
// if (!isAuthenticated) {
|
|
|
|
// requests.push(getPortalSettings());
|
|
|
|
// } else if (
|
|
|
|
// !window.location.pathname.includes("confirm/EmailActivation")
|
|
|
|
// ) {
|
|
|
|
// requests.push(getUser());
|
|
|
|
// requests.push(getPortalSettings());
|
|
|
|
// //requests.push(getModules());
|
|
|
|
// }
|
|
|
|
|
|
|
|
// Promise.all(requests)
|
|
|
|
// .catch((e) => {
|
|
|
|
// toastr.error(e);
|
|
|
|
// })
|
|
|
|
// .finally(() => {
|
|
|
|
// utils.updateTempContent();
|
|
|
|
// setIsLoaded();
|
|
|
|
// });
|
|
|
|
} catch (err) {
|
|
|
|
toastr.error(err);
|
|
|
|
}
|
2020-10-16 13:20:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
render() {
|
|
|
|
return navigator.onLine ? (
|
|
|
|
<Router history={history}>
|
2021-01-15 13:28:08 +00:00
|
|
|
{!this.isThirdPartyResponse && <NavMenu />}
|
2020-10-16 13:20:12 +00:00
|
|
|
<Main>
|
|
|
|
<Suspense fallback={null}>
|
|
|
|
<Switch>
|
|
|
|
<Route exact path="/wizard" component={Wizard} />
|
|
|
|
<PublicRoute
|
|
|
|
exact
|
|
|
|
path={[
|
|
|
|
"/login",
|
|
|
|
"/login/error=:error",
|
|
|
|
"/login/confirmed-email=:confirmedEmail",
|
|
|
|
]}
|
|
|
|
component={Login}
|
|
|
|
/>
|
|
|
|
<Route path="/confirm" component={Confirm} />
|
2021-01-15 15:15:07 +00:00
|
|
|
<PrivateRoute
|
2021-01-15 13:28:08 +00:00
|
|
|
path={`/thirdparty/:provider`}
|
|
|
|
component={ThirdPartyResponse}
|
|
|
|
/>
|
2020-10-16 13:20:12 +00:00
|
|
|
<PrivateRoute
|
|
|
|
exact
|
|
|
|
path={["/", "/error=:error"]}
|
|
|
|
component={Home}
|
|
|
|
/>
|
|
|
|
<PrivateRoute exact path="/about" component={About} />
|
|
|
|
<PrivateRoute restricted path="/settings" component={Settings} />
|
|
|
|
<PrivateRoute
|
|
|
|
exact
|
|
|
|
path={["/coming-soon"]}
|
|
|
|
component={ComingSoon}
|
|
|
|
/>
|
|
|
|
<PrivateRoute path="/payments" component={Payments} />
|
|
|
|
<PrivateRoute component={Error404} />
|
|
|
|
</Switch>
|
|
|
|
</Suspense>
|
|
|
|
</Main>
|
|
|
|
</Router>
|
|
|
|
) : (
|
|
|
|
<Offline />
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const mapStateToProps = (state) => {
|
2021-02-02 09:55:14 +00:00
|
|
|
const { /*modules,*/ isLoaded /* , settings */ } = state.auth;
|
2021-02-02 06:48:57 +00:00
|
|
|
//const { organizationName } = settings;
|
2020-10-16 13:20:12 +00:00
|
|
|
return {
|
2021-02-02 09:55:14 +00:00
|
|
|
//modules,
|
2020-10-16 13:20:12 +00:00
|
|
|
isLoaded,
|
2021-02-02 06:48:57 +00:00
|
|
|
//organizationName,
|
2020-10-16 13:20:12 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
const mapDispatchToProps = (dispatch) => {
|
|
|
|
return {
|
2020-12-04 08:38:15 +00:00
|
|
|
getIsAuthenticated: () => getIsAuthenticated(dispatch),
|
2021-02-02 06:48:57 +00:00
|
|
|
//getPortalSettings: () => getPortalSettings(dispatch),
|
2021-02-01 08:45:26 +00:00
|
|
|
//getUser: () => getUser(dispatch),
|
2021-01-29 15:06:02 +00:00
|
|
|
//getModules: () => getModules(dispatch),
|
2020-12-07 08:11:04 +00:00
|
|
|
setIsLoaded: () => dispatch(setIsLoaded(true)),
|
2020-10-16 13:20:12 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2021-02-01 11:01:09 +00:00
|
|
|
// const AppWrapper = inject(({ userStore }, { ...props }) => ({
|
|
|
|
// setCurrentUser: userStore.setCurrentUser,
|
|
|
|
// user: userStore.user,
|
|
|
|
// props,
|
|
|
|
// }))(
|
|
|
|
// observer(({ props, setCurrentUser, user }) => {
|
|
|
|
// useEffect(() => {
|
|
|
|
// setCurrentUser();
|
|
|
|
// }, [setCurrentUser]);
|
|
|
|
|
|
|
|
// return <App {...props} />;
|
|
|
|
// })
|
|
|
|
// );
|
2021-02-01 08:45:26 +00:00
|
|
|
|
2021-02-01 11:01:09 +00:00
|
|
|
export default connect(
|
|
|
|
mapStateToProps,
|
|
|
|
mapDispatchToProps
|
|
|
|
)(
|
2021-02-02 09:55:14 +00:00
|
|
|
inject(({ store }) => {
|
|
|
|
return {
|
|
|
|
user: store.userStore.user,
|
|
|
|
isAuthenticated: store.userStore.isAuthenticated,
|
|
|
|
getUser: store.userStore.getCurrentUser,
|
|
|
|
getPortalSettings: store.settingsStore.getPortalSettings,
|
|
|
|
modules: store.moduleStore.modules,
|
|
|
|
loadBaseInfo: store.init,
|
|
|
|
//organizationName: settingsStore.settings.organizationName
|
|
|
|
};
|
|
|
|
})(App)
|
2021-02-01 11:01:09 +00:00
|
|
|
);
|
2021-02-01 08:45:26 +00:00
|
|
|
|
2021-02-01 11:01:09 +00:00
|
|
|
// export default inject(({ userStore }) => ({
|
|
|
|
// user: userStore.user,
|
|
|
|
// getUser: userStore.setCurrentUser,
|
|
|
|
// }))(observer(connect(mapStateToProps, mapDispatchToProps)(App)));
|