Перейти к основному содержимому

useSagaMutation

@mineflow/client-react


@mineflow/client-react / useSagaMutation

Function: useSagaMutation()

function useSagaMutation<TVars>(start: (client: MineflowClient, vars: TVars) => Promise<{
sagaId: string;
}>, options?: object): UseMutationResult<{
sagaId: string;
steps: object[];
}, Error, TVars>;

Defined in: client-react/src/hooks.ts:212

Хук async-саги: start инициирует операцию (POST 202{ sagaId }), затем хук поллит /sagas/{id}/status до терминального состояния и резолвится финальным SagaStatus. Терминальный откат (failed/compensated) бросается как SagaFailedError → срабатывает onError, а не onSuccess.

Type Parameters

Type ParameterDefault type
TVarsvoid

Parameters

ParameterTypeDescription
start(client: MineflowClient, vars: TVars) => Promise<{ sagaId: string; }>Замыкание (client, vars) => Promise<{ sagaId }> — инициирует сагу.
options?{ pollOptions?: PollSagaOptions; }pollOptions пробрасывается в pollSaga (интервал/таймаут).
options.pollOptions?PollSagaOptions-

Returns

UseMutationResult<{ sagaId: string; steps: object[]; }, Error, TVars>

UseMutationResult<SagaStatus>isPending пока идёт сага, data — финальный успешный SagaStatus (со steps[]).

Example

const m = useSagaMutation(async (c, vars: { id: string }) => {
const res = unwrap(await c.POST('/api/v1/eam/sagas/asset-decommission', { ... }));
return { sagaId: res.sagaId };
});