fix: onboarding redirect on signup
This commit is contained in:
parent
872475f370
commit
8ae57ef66d
3 changed files with 34 additions and 6 deletions
|
|
@ -21,6 +21,7 @@ import FunnelIssueDetails from 'Components/Funnels/FunnelIssueDetails';
|
|||
|
||||
import APIClient from './api_client';
|
||||
import * as routes from './routes';
|
||||
import { OB_DEFAULT_TAB } from 'App/routes';
|
||||
import Signup from './components/Signup/Signup';
|
||||
import { fetchTenants } from 'Duck/user';
|
||||
|
||||
|
|
@ -48,6 +49,7 @@ const SIGNUP_PATH = routes.signup();
|
|||
const FORGOT_PASSWORD = routes.forgotPassword();
|
||||
const CLIENT_PATH = routes.client();
|
||||
const ONBOARDING_PATH = routes.onboarding();
|
||||
const ONBOARDING_REDIRECT_PATH = routes.onboarding(OB_DEFAULT_TAB);
|
||||
|
||||
@withRouter
|
||||
@connect((state) => {
|
||||
|
|
@ -67,6 +69,7 @@ const ONBOARDING_PATH = routes.onboarding();
|
|||
organisation: state.getIn([ 'user', 'client', 'name' ]),
|
||||
tenantId: state.getIn([ 'user', 'client', 'tenantId' ]),
|
||||
tenants: state.getIn(['user', 'tenants']),
|
||||
onboarding: state.getIn([ 'user', 'onboarding' ])
|
||||
};
|
||||
}, {
|
||||
fetchUserInfo, fetchTenants
|
||||
|
|
@ -92,7 +95,7 @@ class Router extends React.Component {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { isLoggedIn, jwt, siteId, sites, loading, changePassword, location, tenants } = this.props;
|
||||
const { isLoggedIn, jwt, siteId, sites, loading, changePassword, location, tenants, onboarding } = this.props;
|
||||
const siteIdList = sites.map(({ id }) => id).toJS();
|
||||
const hideHeader = location.pathname && location.pathname.includes('/session/');
|
||||
|
||||
|
|
@ -121,6 +124,9 @@ class Router extends React.Component {
|
|||
}
|
||||
}
|
||||
/>
|
||||
{ onboarding &&
|
||||
<Redirect to={ withSiteId(ONBOARDING_REDIRECT_PATH, siteId)} />
|
||||
}
|
||||
{ siteIdList.length === 0 &&
|
||||
<Redirect to={ routes.client(routes.CLIENT_TABS.SITES) } />
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { Button } from 'UI'
|
|||
import { OB_TABS, onboarding as onboardingRoute } from 'App/routes'
|
||||
import * as routes from '../../../../routes'
|
||||
import { sessions } from 'App/routes';
|
||||
import { setOnboarding } from 'Duck/user';
|
||||
|
||||
const withSiteId = routes.withSiteId;
|
||||
const MENU_ITEMS = [OB_TABS.INSTALLING, OB_TABS.IDENTIFY_USERS, OB_TABS.MANAGE_USERS, OB_TABS.INTEGRATIONS]
|
||||
|
|
@ -25,9 +26,14 @@ const OnboardingNavButton = (props) => {
|
|||
const tab = MENU_ITEMS[activeIndex+1]
|
||||
history.push(withSiteId(onboardingRoute(tab), siteId));
|
||||
} else {
|
||||
history.push(sessions());
|
||||
onDone()
|
||||
}
|
||||
}
|
||||
|
||||
const onDone = () => {
|
||||
props.setOnboarding(false);
|
||||
history.push(sessions());
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
@ -35,7 +41,7 @@ const OnboardingNavButton = (props) => {
|
|||
primary
|
||||
size="small"
|
||||
plain
|
||||
onClick={() => history.push(sessions())}
|
||||
onClick={onDone}
|
||||
>
|
||||
{activeIndex === 0 ? 'Done. See Recorded Sessions' : 'Skip Optional Steps and See Recorded Sessions'}
|
||||
</Button>
|
||||
|
|
@ -53,4 +59,4 @@ const OnboardingNavButton = (props) => {
|
|||
)
|
||||
}
|
||||
|
||||
export default withRouter(OnboardingNavButton)
|
||||
export default withRouter(connect(null, { setOnboarding })(OnboardingNavButton))
|
||||
|
|
@ -19,6 +19,7 @@ const PUT_CLIENT = new RequestTypes('user/PUT_CLIENT');
|
|||
|
||||
const PUSH_NEW_SITE = 'user/PUSH_NEW_SITE';
|
||||
const SET_SITE_ID = 'user/SET_SITE_ID';
|
||||
const SET_ONBOARDING = 'user/SET_ONBOARDING';
|
||||
|
||||
const SITE_ID_STORAGE_KEY = "__$user-siteId$__";
|
||||
const storedSiteId = localStorage.getItem(SITE_ID_STORAGE_KEY);
|
||||
|
|
@ -29,7 +30,8 @@ const initialState = Map({
|
|||
siteId: null,
|
||||
passwordRequestError: false,
|
||||
passwordErrors: List(),
|
||||
tenants: []
|
||||
tenants: [],
|
||||
onboarding: false
|
||||
});
|
||||
|
||||
const setClient = (state, data) => {
|
||||
|
|
@ -48,12 +50,16 @@ const setClient = (state, data) => {
|
|||
const reducer = (state = initialState, action = {}) => {
|
||||
switch (action.type) {
|
||||
case UPDATE_PASSWORD.SUCCESS:
|
||||
case SIGNUP.SUCCESS:
|
||||
case LOGIN.SUCCESS:
|
||||
return setClient(
|
||||
state.set('account', Account(action.data.user)),
|
||||
action.data.client,
|
||||
);
|
||||
case SIGNUP.SUCCESS:
|
||||
return setClient(
|
||||
state.set('account', Account(action.data.user)),
|
||||
action.data.client,
|
||||
).set('onboarding', true);
|
||||
case REQUEST_RESET_PASSWORD.SUCCESS:
|
||||
break;
|
||||
case UPDATE_APPEARANCE.REQUEST: //TODO: failure handling
|
||||
|
|
@ -77,6 +83,8 @@ const reducer = (state = initialState, action = {}) => {
|
|||
case PUSH_NEW_SITE:
|
||||
return state.updateIn([ 'client', 'sites' ], list =>
|
||||
list.push(action.newSite));
|
||||
case SET_ONBOARDING:
|
||||
return state.set('onboarding', action.state)
|
||||
}
|
||||
return state;
|
||||
};
|
||||
|
|
@ -187,3 +195,11 @@ export function pushNewSite(newSite) {
|
|||
newSite,
|
||||
};
|
||||
}
|
||||
|
||||
export function setOnboarding(state = false) {
|
||||
return {
|
||||
type: SET_ONBOARDING,
|
||||
state
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue