31 lines
984 B
TypeScript
31 lines
984 B
TypeScript
import { ReduxActionTypes } from "constants/ReduxActionConstants";
|
|
import { all, takeLatest, select, put } from "redux-saga/effects";
|
|
import { getActiveTourIndex, getActiveTourType } from "selectors/tourSelectors";
|
|
import { setActiveTourIndex, resetActiveTour } from "actions/tourActions";
|
|
import TourSteps from "constants/TourSteps";
|
|
import { TourType } from "entities/Tour";
|
|
|
|
function* proceedToNextTourStep() {
|
|
const currentStep = yield select(getActiveTourIndex);
|
|
const activeTourType = yield select(getActiveTourType);
|
|
const activeTourSteps = TourSteps[activeTourType as TourType];
|
|
|
|
if (!activeTourSteps) return;
|
|
|
|
const lengthOfTour = activeTourSteps.length;
|
|
if (lengthOfTour - 1 === currentStep) {
|
|
yield put(resetActiveTour());
|
|
} else {
|
|
yield put(setActiveTourIndex(currentStep + 1));
|
|
}
|
|
}
|
|
|
|
export default function* themeSagas() {
|
|
yield all([
|
|
takeLatest(
|
|
ReduxActionTypes.PROCEED_TO_NEXT_TOUR_STEP,
|
|
proceedToNextTourStep,
|
|
),
|
|
]);
|
|
}
|