38 lines
1.0 KiB
JavaScript
38 lines
1.0 KiB
JavaScript
// @flow
|
|
|
|
import { setActiveOnboarding } from './actions';
|
|
import { CONTINUE_ONBOARDING, START_ONBOARDING } from './actionTypes';
|
|
import { onboardingSteps } from './constants';
|
|
|
|
export default (store: Object) => (next: Function) => (action: Object) => {
|
|
const result = next(action);
|
|
const state = store.getState();
|
|
|
|
switch (action.type) {
|
|
case CONTINUE_ONBOARDING: {
|
|
const section = state.onboarding.activeOnboardingSection;
|
|
|
|
const nextStep = onboardingSteps[section].find(
|
|
step => !state.onboarding.onboardingShown.includes(step)
|
|
);
|
|
|
|
store.dispatch(setActiveOnboarding(nextStep, nextStep && section));
|
|
break;
|
|
}
|
|
|
|
case START_ONBOARDING: {
|
|
const { section } = action;
|
|
const nextStep = onboardingSteps[section].find(
|
|
step => !state.onboarding.onboardingShown.includes(step)
|
|
);
|
|
|
|
if (nextStep) {
|
|
store.dispatch(setActiveOnboarding(nextStep, section));
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
};
|