added action getPortalCultures, fix routing

This commit is contained in:
Artem Tarasov 2020-07-07 14:50:31 +03:00
parent 1a730f0750
commit 779eb155b5
5 changed files with 72 additions and 29 deletions

View File

@ -18,7 +18,7 @@ const App = () => {
fallback={<Loader className="pageLoader" type="rombs" size='40px' />}
>
<Switch>
<PrivateRoute exact path="/wizard" component={Wizard} />
<Route exact path="/wizard" component={Wizard} />
<PublicRoute exact path={["/login","/login/error=:error", "/login/confirmed-email=:confirmedEmail"]} component={Login} />
<Route path="/confirm" component={Confirm} />
<PrivateRoute exact path={["/","/error=:error"]} component={Home} />
@ -34,4 +34,4 @@ const App = () => {
);
};
export default App;
export default App;

View File

@ -4,6 +4,7 @@ import styled from "styled-components";
import i18n from './i18n';
import { withTranslation } from 'react-i18next';
import { connect } from 'react-redux';
import { Redirect } from 'react-router-dom'
import { PageLayout } from "asc-web-common";
import {
@ -14,7 +15,7 @@ import {
Button, Box, Loader,
ModalDialog, utils } from 'asc-web-components';
import { getWizardInfo } from '../../../store/wizard/actions';
import { getWizardInfo, getPortalTimezones, getPortalCultures, setIsWizardLoaded } from '../../../store/wizard/actions';
const { EmailSettings } = utils.email;
const settings = new EmailSettings();
@ -317,17 +318,23 @@ class Body extends Component {
email: '',
newEmail: '',
license: false,
selectLanguage: props.languages[0],
selectTimezone: props.timezones[0]
selectLanguage: props.portalCulture,
selectTimezone: props.portalTimezone
}
this.inputRef = React.createRef();
}
componentDidMount() {
const { t, wizardToken, getWizardInfo } = this.props;
async componentDidMount() {
const { t, wizardToken, getWizardInfo, getPortalCultures, getPortalTimezones, setIsWizardLoaded } = this.props;
document.title = t('title');
getWizardInfo(wizardToken);
//await getPortalTimezones()
await getPortalCultures();
await getWizardInfo(wizardToken);
setIsWizardLoaded(true);
}
isValidPassHandler = val => {
@ -571,7 +578,7 @@ class Body extends Component {
renderSettingsBox = () => {
const { selectLanguage, selectTimezone } = this.state;
const { isOwner, t, domain, languages, timezones, ownerEmail } = this.props;
const { isOwner, t, domain, cultures, timezones, ownerEmail } = this.props;
const titleEmail = isOwner
? <Text className="settings-title">{t('email')}</Text>
@ -594,7 +601,7 @@ class Body extends Component {
{contentEmail}
<GroupButton className="drop-down value" label={selectLanguage} isDropdown={true}>
{
languages.map(el => (
cultures.map(el => (
<DropDownItem
key={el}
label={el}
@ -633,7 +640,17 @@ class Body extends Component {
}
render() {
const { isWizardLoaded } = this.props;
const { isWizardLoaded, wizardToken } = this.props;
if(!wizardToken) {
return (
<Redirect
to={{
pathname: "/login",
state: { from: this.props.location }
}}
/>
);
}
console.log('wizard render', this.props)
@ -685,10 +702,13 @@ function mapStateToProps(state) {
settingsPassword: state.auth.settings.passwordSettings,
wizardToken: state.auth.settings.wizardToken,
isWizardLoaded: state.wizard.isWizardLoaded
isWizardLoaded: state.wizard.isWizardLoaded,
cultures: state.auth.settings.cultures,
portalCulture: state.auth.settings.culture,
portalTimezone: state.auth.settings.timezone
};
}
export default connect(mapStateToProps, {
getWizardInfo
getWizardInfo, getPortalCultures, getPortalTimezones, setIsWizardLoaded
})(withRouter(Wizard));

View File

@ -1,5 +1,5 @@
import { store } from "asc-web-common";
const { getPortalPasswordSettings } = store.auth.actions;
import { store, api } from "asc-web-common";
const { getPortalPasswordSettings, setPortalLanguageAndTime, setTimezones, setPortalCultures } = store.auth.actions;
export const SET_IS_WIZARD_LOADED = 'SET_IS_WIZARD_LOADED';
@ -12,7 +12,23 @@ export function setIsWizardLoaded(isWizardLoaded) {
export function getWizardInfo(token) {
return dispatch => {
return getPortalPasswordSettings(dispatch, token)
.then(() => dispatch(setIsWizardLoaded(true)));
return getPortalPasswordSettings(dispatch, token);
};
};
};
export function getPortalTimezones() {
return dispatch => {
return api.settings.getPortalTimezones().then(timezones => {
console.log('timezones -----------------------------')
dispatch(setTimezones(timezones));
});
};
};
export function getPortalCultures() {
return dispatch => {
return api.settings.getPortalCultures().then(cultures => {
dispatch(setPortalCultures(cultures));
})
}
}

View File

@ -36,11 +36,7 @@ const PrivateRoute = ({ component: Component, ...rest }) => {
}
if (!token || (isLoaded && !isAuthenticated)) {
if (wizardToken) {
if(props.history.location.pathname === '/wizard') {
return <Component {...props} />;
}
if(wizardToken) {
return (
<Redirect
to={{
@ -49,8 +45,7 @@ const PrivateRoute = ({ component: Component, ...rest }) => {
}}
/>
)
}
}
return (
<Redirect
to={{

View File

@ -2,10 +2,13 @@
import React, { useCallback } from 'react';
import { Redirect, Route } from 'react-router-dom';
import { AUTH_KEY } from "../../constants";
import { connect } from "react-redux";
export const PublicRoute = ({ component: Component, ...rest }) => {
const token = localStorage.getItem(AUTH_KEY);
const {wizardToken} = rest;
const renderComponent = useCallback(
props => {
if(token) {
@ -19,11 +22,14 @@ export const PublicRoute = ({ component: Component, ...rest }) => {
);
}
if(!token) {
if(wizardToken) {
if(props.location.pathname === '/wizard') {
return <Component {...props} />;
}
return (
<Redirect
to={{
pathname: "/",
pathname: "/wizard",
state: { from: props.location }
}}
/>
@ -31,7 +37,7 @@ export const PublicRoute = ({ component: Component, ...rest }) => {
}
return <Component {...props} />;
}, [token, Component]);
}, [token, wizardToken, Component]);
return (
<Route
{...rest}
@ -40,4 +46,10 @@ export const PublicRoute = ({ component: Component, ...rest }) => {
)
};
export default PublicRoute;
function mapStateToProps(state) {
return {
wizardToken: state.auth.settings.wizardToken
};
}
export default connect(mapStateToProps)(PublicRoute);