Files
tnsu-approval-route/frontend/src/webparts/approvalAdmin/hooks/useResolveRoute.ts
T
2026-07-30 06:11:24 +00:00

28 lines
1.2 KiB
TypeScript

import * as React from 'react';
import { ResolveTemplateRouteQuery, ResolveTemplateRouteResult } from '../models';
import { ApprovalRouteApi } from '../services/api';
import { useAsyncSubmit } from './useAsyncSubmit';
export interface ResolveRoute {
result?: ResolveTemplateRouteResult;
isBusy: boolean;
error?: string;
resolve: (query: ResolveTemplateRouteQuery) => void;
fail: (message: string) => void;
}
/** Диагностический запрос «как разрешится маршрут» и его состояние. */
export function useResolveRoute(api: ApprovalRouteApi): ResolveRoute {
const [result, setResult] = React.useState<ResolveTemplateRouteResult | undefined>();
const submit = useAsyncSubmit();
const resolve = (query: ResolveTemplateRouteQuery): void => {
// Прошлый результат убираем сразу: показывать его рядом с новыми
// параметрами формы — вводить пользователя в заблуждение.
setResult(undefined);
submit.run(() => api.templateRoutes.resolve(query).then(setResult));
};
return { result, isBusy: submit.isBusy, error: submit.error, resolve, fail: submit.fail };
}