PromucFlow_constructor/app/client/src/utils/hooks/useProceedToNextTourStep.tsx
2021-07-16 14:01:26 +05:30

34 lines
1012 B
TypeScript

import { TourType } from "entities/Tour";
import { useDispatch, useSelector } from "react-redux";
import { AppState } from "reducers";
import { getActiveTourIndex, getActiveTourType } from "selectors/tourSelectors";
import { proceedToNextTourStep } from "actions/tourActions";
export const useIsTourStepActive = (
activeTourStepConfig: { [key in TourType]?: any },
) => {
const activeTourType = useSelector(getActiveTourType);
const expectedActiveStep =
activeTourType &&
activeTourStepConfig &&
activeTourStepConfig[activeTourType];
const isCurrentStepActive = useSelector(
(state: AppState) => getActiveTourIndex(state) === expectedActiveStep,
);
return isCurrentStepActive;
};
const useProceedToNextTourStep = (
activeTourStepConfig: { [key in TourType]?: any },
) => {
const dispatch = useDispatch();
const isActive = useIsTourStepActive(activeTourStepConfig);
return () => isActive && dispatch(proceedToNextTourStep());
};
export default useProceedToNextTourStep;