Files
alla-allaos-fullstack/src/features/setup/api/use-setup-run.ts
2026-07-06 15:50:47 +07:00

55 lines
1.5 KiB
TypeScript

'use client';
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { completeBootstrapSetup, completeSetupRun, saveSetupStep, startSetupRun } from './service';
import { setupKeys } from './queries';
import type { CompleteBootstrapSetupPayload, SaveSetupStepPayload } from './types';
function useInvalidateSetupRun() {
const queryClient = useQueryClient();
return () => {
queryClient.invalidateQueries({ queryKey: setupKeys.run() });
queryClient.invalidateQueries({ queryKey: [...setupKeys.all, 'bootstrap'] });
queryClient.invalidateQueries({ queryKey: setupKeys.report() });
queryClient.invalidateQueries({ queryKey: setupKeys.bootstrapStatus() });
};
}
export function useStartSetupRun() {
const invalidate = useInvalidateSetupRun();
return useMutation({
mutationFn: () => startSetupRun(),
onSuccess: invalidate
});
}
export function useSaveSetupStep() {
const invalidate = useInvalidateSetupRun();
return useMutation({
mutationFn: (payload: SaveSetupStepPayload) => saveSetupStep(payload),
onSuccess: invalidate
});
}
export function useCompleteSetupRun() {
const invalidate = useInvalidateSetupRun();
return useMutation({
mutationFn: (report: Record<string, unknown>) => completeSetupRun(report),
onSuccess: invalidate
});
}
export function useCompleteBootstrapSetup() {
const invalidate = useInvalidateSetupRun();
return useMutation({
mutationFn: (input: CompleteBootstrapSetupPayload) => completeBootstrapSetup(input),
onSuccess: invalidate
});
}