halo/ui/console-src/modules/contents/posts/composables/use-post-update-mutate.ts

41 lines
1.1 KiB
TypeScript

import type { Post } from "@halo-dev/api-client";
import { coreApiClient } from "@halo-dev/api-client";
import { Toast } from "@halo-dev/components";
import { useMutation } from "@tanstack/vue-query";
import { useI18n } from "vue-i18n";
export function usePostUpdateMutate() {
const { t } = useI18n();
return useMutation({
mutationKey: ["post-update"],
mutationFn: async (post: Post) => {
const { data: latestPost } = await coreApiClient.content.post.getPost({
name: post.metadata.name,
});
return await coreApiClient.content.post.updatePost(
{
name: post.metadata.name,
post: {
...latestPost,
spec: post.spec,
metadata: {
...latestPost.metadata,
annotations: post.metadata.annotations,
},
},
},
{
mute: true,
}
);
},
retry: 3,
onError: (error) => {
console.error("Failed to update post", error);
Toast.error(t("core.common.toast.server_internal_error"));
},
});
}