portainer/app/react/edge/edge-stacks/CreateView/useTemplateParams.tsx

44 lines
884 B
TypeScript
Raw Normal View History

import { useRouter } from '@uirouter/react';
import { useParamState } from '@/react/hooks/useParamState';
export function useTemplateParams() {
const router = useRouter();
const [id] = useParamState('templateId', (param) => {
if (!param) {
return undefined;
}
const templateId = parseInt(param, 10);
if (Number.isNaN(templateId)) {
return undefined;
}
return templateId;
});
const [type] = useParamState('templateType', (param) => {
if (param === 'app' || param === 'custom') {
return param;
}
return undefined;
});
return [{ id, type }, handleChange] as const;
function handleChange({
id,
type,
}: {
id: number | undefined;
type: 'app' | 'custom' | undefined;
}) {
router.stateService.go(
'.',
{ templateId: id, templateType: type },
{ reload: false }
);
}
}