mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-04 10:12:05 +00:00
* chore: upgrade frontend application dependencies * chore: upgrade frontend infrastructure dependencies * fix: align lockfiles with CI npm * fix: preserve ky error semantics * fix: sanitize timeout error message
24 lines
981 B
TypeScript
24 lines
981 B
TypeScript
import { useMutation, useQueryClient, type UseMutationResult } from "@tanstack/react-query";
|
|
import { useNavigate } from "react-router";
|
|
import { toast } from "react-toastify";
|
|
import { assetsApi } from "@/domain/assets/api/assets-api";
|
|
import type { AssetFormValues } from "@/domain/assets/schemas/asset-schema";
|
|
import type { Asset } from "@/domain/assets/types/asset";
|
|
import { queryKeys } from "@/infra/query-key/query-key";
|
|
|
|
export function useCreateAsset(): UseMutationResult<Asset, Error, AssetFormValues> {
|
|
const navigate = useNavigate();
|
|
const queryClient = useQueryClient();
|
|
|
|
return useMutation({
|
|
mutationFn: (values: AssetFormValues) => assetsApi.create(values),
|
|
onSuccess: () => {
|
|
void queryClient.invalidateQueries({ queryKey: queryKeys.assets.all });
|
|
toast.success("Asset created successfully!");
|
|
navigate("/assets");
|
|
},
|
|
onError: (error: Error) => {
|
|
toast.error(error.message || "Failed to create asset");
|
|
},
|
|
});
|
|
}
|