diff --git a/ui/console-src/modules/contents/pages/DeletedSinglePageList.vue b/ui/console-src/modules/contents/pages/DeletedSinglePageList.vue index 25fa625e0..90a9a052e 100644 --- a/ui/console-src/modules/contents/pages/DeletedSinglePageList.vue +++ b/ui/console-src/modules/contents/pages/DeletedSinglePageList.vue @@ -23,7 +23,6 @@ import { VStatusDot, } from "@halo-dev/components"; import { useQuery } from "@tanstack/vue-query"; -import { cloneDeep } from "lodash-es"; import { ref, watch } from "vue"; import { useI18n } from "vue-i18n"; @@ -132,12 +131,17 @@ const handleRecovery = async (singlePage: SinglePage) => { confirmText: t("core.common.buttons.confirm"), cancelText: t("core.common.buttons.cancel"), onConfirm: async () => { - const singlePageToUpdate = cloneDeep(singlePage); - singlePageToUpdate.spec.deleted = false; - await coreApiClient.content.singlePage.updateSinglePage({ - name: singlePageToUpdate.metadata.name, - singlePage: singlePageToUpdate, + await coreApiClient.content.singlePage.patchSinglePage({ + name: singlePage.metadata.name, + jsonPatchInner: [ + { + op: "add", + path: "/spec/deleted", + value: false, + }, + ], }); + await refetch(); Toast.success(t("core.common.toast.recovery_success")); @@ -164,15 +168,15 @@ const handleRecoveryInBatch = async () => { return Promise.resolve(); } - return coreApiClient.content.singlePage.updateSinglePage({ + return coreApiClient.content.singlePage.patchSinglePage({ name: singlePage.metadata.name, - singlePage: { - ...singlePage, - spec: { - ...singlePage.spec, - deleted: false, + jsonPatchInner: [ + { + op: "add", + path: "/spec/deleted", + value: false, }, - }, + ], }); }) ); diff --git a/ui/console-src/modules/contents/pages/SinglePageList.vue b/ui/console-src/modules/contents/pages/SinglePageList.vue index 508b4099c..77b25c0ae 100644 --- a/ui/console-src/modules/contents/pages/SinglePageList.vue +++ b/ui/console-src/modules/contents/pages/SinglePageList.vue @@ -237,15 +237,15 @@ const handleDeleteInBatch = async () => { return Promise.resolve(); } - return coreApiClient.content.singlePage.updateSinglePage({ + return coreApiClient.content.singlePage.patchSinglePage({ name: page.metadata.name, - singlePage: { - ...page, - spec: { - ...page.spec, - deleted: true, + jsonPatchInner: [ + { + op: "add", + path: "/spec/deleted", + value: true, }, - }, + ], }); }) ); diff --git a/ui/console-src/modules/contents/pages/components/SinglePageListItem.vue b/ui/console-src/modules/contents/pages/components/SinglePageListItem.vue index a4de2d71d..c6e5bf450 100644 --- a/ui/console-src/modules/contents/pages/components/SinglePageListItem.vue +++ b/ui/console-src/modules/contents/pages/components/SinglePageListItem.vue @@ -19,7 +19,6 @@ import { VStatusDot, } from "@halo-dev/components"; import { useMutation, useQueryClient } from "@tanstack/vue-query"; -import { cloneDeep } from "lodash-es"; import type { Ref } from "vue"; import { computed, inject, ref } from "vue"; import { useI18n } from "vue-i18n"; @@ -71,24 +70,21 @@ const isPublishing = computed(() => { const { mutate: changeVisibleMutation } = useMutation({ mutationFn: async (singlePage: SinglePage) => { - const { data } = await coreApiClient.content.singlePage.getSinglePage({ + return await coreApiClient.content.singlePage.patchSinglePage({ name: singlePage.metadata.name, + jsonPatchInner: [ + { + op: "add", + path: "/spec/visible", + value: singlePage.spec.visible === "PRIVATE" ? "PUBLIC" : "PRIVATE", + }, + ], }); - data.spec.visible = data.spec.visible === "PRIVATE" ? "PUBLIC" : "PRIVATE"; - await coreApiClient.content.singlePage.updateSinglePage( - { - name: singlePage.metadata.name, - singlePage: data, - }, - { - mute: true, - } - ); - await queryClient.invalidateQueries({ queryKey: ["singlePages"] }); }, retry: 3, onSuccess: () => { Toast.success(t("core.common.toast.operation_success")); + queryClient.invalidateQueries({ queryKey: ["singlePages"] }); }, onError: () => { Toast.error(t("core.common.toast.operation_failed")); @@ -103,12 +99,17 @@ const handleDelete = async () => { confirmText: t("core.common.buttons.confirm"), cancelText: t("core.common.buttons.cancel"), onConfirm: async () => { - const singlePageToUpdate = cloneDeep(props.singlePage.page); - singlePageToUpdate.spec.deleted = true; - await coreApiClient.content.singlePage.updateSinglePage({ + await coreApiClient.content.singlePage.patchSinglePage({ name: props.singlePage.page.metadata.name, - singlePage: singlePageToUpdate, + jsonPatchInner: [ + { + op: "add", + path: "/spec/deleted", + value: true, + }, + ], }); + await queryClient.invalidateQueries({ queryKey: ["singlePages"] }); Toast.success(t("core.common.toast.delete_success")); @@ -195,22 +196,25 @@ const handleDelete = async () => { - - - + + + + + +