The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/views/setupWizard/hooks/useStepRouting.ts

34 lines
966 B

import { useState, useEffect, Dispatch, SetStateAction } from 'react';
import { useRole } from '../../../contexts/AuthorizationContext';
import { useRouteParameter, useRoute } from '../../../contexts/RouterContext';
export const useStepRouting = (): [number, Dispatch<SetStateAction<number>>] => {
const param = useRouteParameter('step');
const setupWizardRoute = useRoute('setup-wizard');
const hasAdminRole = useRole('admin');
const initialStep = hasAdminRole ? 2 : 1;
const [currentStep, setCurrentStep] = useState<number>(() => {
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];
};