mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 22:52:06 +00:00
70 lines
2.3 KiB
TypeScript
70 lines
2.3 KiB
TypeScript
|
|
import { useMutation, useQueryClient, type UseMutationResult } from "@tanstack/react-query";
|
||
|
|
import { toast } from "react-toastify";
|
||
|
|
import { taskTemplatesApi } from "@/domain/settings/task-templates/api/task-templates-api";
|
||
|
|
import type {
|
||
|
|
TaskTemplate,
|
||
|
|
TaskTemplateFormValues,
|
||
|
|
} from "@/domain/settings/task-templates/types/task-template";
|
||
|
|
import { queryKeys } from "@/infra/query-key/query-key";
|
||
|
|
|
||
|
|
interface UpdateTaskTemplateInput {
|
||
|
|
id: string | number;
|
||
|
|
values: TaskTemplateFormValues;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function useCreateTaskTemplate(): UseMutationResult<
|
||
|
|
TaskTemplate,
|
||
|
|
Error,
|
||
|
|
TaskTemplateFormValues
|
||
|
|
> {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
|
||
|
|
return useMutation({
|
||
|
|
mutationFn: (values: TaskTemplateFormValues) => taskTemplatesApi.create(values),
|
||
|
|
onSuccess: () => {
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.taskTemplates.all });
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.workOrders.taskTemplates() });
|
||
|
|
toast.success("Template created");
|
||
|
|
},
|
||
|
|
onError: (error: Error) => {
|
||
|
|
toast.error(error.message || "Failed to create template");
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export function useUpdateTaskTemplate(): UseMutationResult<
|
||
|
|
TaskTemplate,
|
||
|
|
Error,
|
||
|
|
UpdateTaskTemplateInput
|
||
|
|
> {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
|
||
|
|
return useMutation({
|
||
|
|
mutationFn: ({ id, values }: UpdateTaskTemplateInput) => taskTemplatesApi.update(id, values),
|
||
|
|
onSuccess: () => {
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.taskTemplates.all });
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.workOrders.taskTemplates() });
|
||
|
|
toast.success("Template updated");
|
||
|
|
},
|
||
|
|
onError: (error: Error) => {
|
||
|
|
toast.error(error.message || "Failed to update template");
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export function useDeleteTaskTemplate(): UseMutationResult<void, Error, string | number> {
|
||
|
|
const queryClient = useQueryClient();
|
||
|
|
|
||
|
|
return useMutation({
|
||
|
|
mutationFn: (id: string | number) => taskTemplatesApi.delete(id),
|
||
|
|
onSuccess: () => {
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.taskTemplates.all });
|
||
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.workOrders.taskTemplates() });
|
||
|
|
toast.success("Template deleted");
|
||
|
|
},
|
||
|
|
onError: (error: Error) => {
|
||
|
|
toast.error(error.message || "Failed to delete template");
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}
|