shoc-frontend-new/src/domain/assets/use-cases/use-create-asset.ts
Alexandre Brandizzi c68d47af7b
Some checks failed
CI / ci (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
chore: upgrade frontend dependencies (#24)
* 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
2026-07-14 21:35:59 -03:00

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");
},
});
}