import { useState, useEffect, Dispatch, SetStateAction } from 'react'; import { useRole } from '../../../contexts/AuthorizationContext'; import { useRouteParameter, useRoute } from '../../../contexts/RouterContext'; export const useStepRouting = (): [number, Dispatch>] => { const param = useRouteParameter('step'); const setupWizardRoute = useRoute('setup-wizard'); const hasAdminRole = useRole('admin'); const initialStep = hasAdminRole ? 2 : 1; const [currentStep, setCurrentStep] = useState(() => { if (!param) { return initialStep; } const step = parseInt(param, 10); if (step && Number.isFinite(step) && step >= 1) { return step; } return initialStep; }); useEffect(() => { if (hasAdminRole && currentStep === 1) { setCurrentStep(2); } setupWizardRoute.replace({ step: String(currentStep) }); }, [setupWizardRoute, currentStep, hasAdminRole]); return [currentStep, setCurrentStep]; };