diff --git a/package.json b/package.json index f5ef82232..2e5619cfa 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@formkit/themes": "^1.0.0-beta.11", "@formkit/vue": "^1.0.0-beta.11", "@formkit/utils": "^1.0.0-beta.11", - "@halo-dev/api-client": "^0.0.47", + "@halo-dev/api-client": "^0.0.50", "@halo-dev/components": "workspace:*", "@halo-dev/console-shared": "workspace:*", "@halo-dev/richtext-editor": "^0.0.0-alpha.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d871231a..e3161a7b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,7 +12,7 @@ importers: '@formkit/themes': ^1.0.0-beta.11 '@formkit/utils': ^1.0.0-beta.11 '@formkit/vue': ^1.0.0-beta.11 - '@halo-dev/api-client': ^0.0.47 + '@halo-dev/api-client': ^0.0.50 '@halo-dev/components': workspace:* '@halo-dev/console-shared': workspace:* '@halo-dev/richtext-editor': ^0.0.0-alpha.11 @@ -104,7 +104,7 @@ importers: '@formkit/themes': 1.0.0-beta.12-e579559_tailwindcss@3.2.4 '@formkit/utils': 1.0.0-beta.12-e579559 '@formkit/vue': 1.0.0-beta.12-e579559_ior6jr3fpijijuwpr34w2i25va - '@halo-dev/api-client': 0.0.47 + '@halo-dev/api-client': 0.0.50 '@halo-dev/components': link:packages/components '@halo-dev/console-shared': link:packages/shared '@halo-dev/richtext-editor': 0.0.0-alpha.11_vue@3.2.45 @@ -1970,8 +1970,8 @@ packages: - windicss dev: false - /@halo-dev/api-client/0.0.47: - resolution: {integrity: sha512-O5Yw7TDpTElCOTKPz98yeaixh5SdfPZ63qOSZlFqO//F3tAvegpjq1ZYHMblJfP1Q/P9GioZB9YYebzzv8PC4g==} + /@halo-dev/api-client/0.0.50: + resolution: {integrity: sha512-/bf/zv/27Pk2dpyozKeEjFkNy5P5ecGX2064WA2oQVHV8sK0UeCRrzDKQ/bIHrHJWaP9aBAN29fE9ocBXoJMeg==} dev: false /@halo-dev/richtext-editor/0.0.0-alpha.11_vue@3.2.45: diff --git a/src/modules/contents/pages/SinglePageEditor.vue b/src/modules/contents/pages/SinglePageEditor.vue index 13e555688..8c99e983b 100644 --- a/src/modules/contents/pages/SinglePageEditor.vue +++ b/src/modules/contents/pages/SinglePageEditor.vue @@ -7,6 +7,7 @@ import { VSpace, VButton, IconSave, + Toast, } from "@halo-dev/components"; import DefaultEditor from "@/components/editor/DefaultEditor.vue"; import SinglePageSettingModal from "./components/SinglePageSettingModal.vue"; @@ -34,7 +35,6 @@ const initialFormState: SinglePageRequest = { pinned: false, allowComment: true, visible: "PUBLIC", - version: 1, priority: 0, excerpt: { autoGenerate: true, @@ -83,19 +83,9 @@ const handleSave = async () => { } if (isUpdateMode.value) { - // Get latest single page - const { data: latestSinglePage } = - await apiClient.extension.singlePage.getcontentHaloRunV1alpha1SinglePage( - { - name: formState.value.page.metadata.name, - } - ); - - formState.value.page = latestSinglePage; - - const { data } = await apiClient.singlePage.updateDraftSinglePage({ + const { data } = await apiClient.singlePage.updateSinglePageContent({ name: formState.value.page.metadata.name, - singlePageRequest: formState.value, + content: formState.value.content, }); formState.value.page = data; @@ -107,9 +97,12 @@ const handleSave = async () => { routeQueryName.value = data.metadata.name; } + Toast.success("保存成功"); + await handleFetchContent(); } catch (error) { console.error("Failed to save single page", error); + Toast.error("保存失败,请重试"); } finally { saving.value = false; } @@ -123,45 +116,16 @@ const handlePublish = async () => { formState.value.content.content = formState.value.content.raw; if (isUpdateMode.value) { - const { headSnapshot } = formState.value.page.spec; const { name: singlePageName } = formState.value.page.metadata; - const { data: latestContent } = - await apiClient.content.updateSnapshotContent({ - snapshotName: headSnapshot as string, - contentRequest: { - raw: formState.value.content.raw as string, - content: formState.value.content.content as string, - rawType: formState.value.content.rawType as string, - headSnapshotName: headSnapshot, - subjectRef: { - kind: "SinglePage", - version: "v1alpha1", - group: "content.halo.run", - name: singlePageName, - }, - }, - }); - // Get latest single page - const { data: latestSinglePage } = - await apiClient.extension.singlePage.getcontentHaloRunV1alpha1SinglePage( - { - name: formState.value.page.metadata.name, - } - ); + await apiClient.singlePage.updateSinglePageContent({ + name: singlePageName, + content: formState.value.content, + }); - formState.value.page = latestSinglePage; - formState.value.page.spec.publish = true; - formState.value.page.spec.headSnapshot = latestContent.snapshotName; - formState.value.page.spec.releaseSnapshot = - formState.value.page.spec.headSnapshot; - - await apiClient.extension.singlePage.updatecontentHaloRunV1alpha1SinglePage( - { - name: singlePageName, - singlePage: formState.value.page, - } - ); + await apiClient.singlePage.publishSinglePage({ + name: singlePageName, + }); } else { formState.value.page.spec.publish = true; await apiClient.singlePage.draftSinglePage({ @@ -169,9 +133,12 @@ const handlePublish = async () => { }); } + Toast.success("发布成功"); + router.push({ name: "SinglePages" }); } catch (error) { console.error("Failed to publish single page", error); + Toast.error("发布失败,请重试"); } finally { publishing.value = false; } diff --git a/src/modules/contents/pages/components/SinglePageSettingModal.vue b/src/modules/contents/pages/components/SinglePageSettingModal.vue index 13b6ac409..49e09e569 100644 --- a/src/modules/contents/pages/components/SinglePageSettingModal.vue +++ b/src/modules/contents/pages/components/SinglePageSettingModal.vue @@ -20,7 +20,6 @@ const initialFormState: SinglePage = { pinned: false, allowComment: true, visible: "PUBLIC", - version: 1, priority: 0, excerpt: { autoGenerate: true, diff --git a/src/modules/contents/posts/PostEditor.vue b/src/modules/contents/posts/PostEditor.vue index f4ff7496d..1acef46fb 100644 --- a/src/modules/contents/posts/PostEditor.vue +++ b/src/modules/contents/posts/PostEditor.vue @@ -7,6 +7,7 @@ import { VButton, VPageHeader, VSpace, + Toast, } from "@halo-dev/components"; import DefaultEditor from "@/components/editor/DefaultEditor.vue"; import PostSettingModal from "./components/PostSettingModal.vue"; @@ -34,7 +35,6 @@ const initialFormState: PostRequest = { pinned: false, allowComment: true, visible: "PUBLIC", - version: 1, priority: 0, excerpt: { autoGenerate: true, @@ -84,17 +84,9 @@ const handleSave = async () => { } if (isUpdateMode.value) { - // Get latest post - const { data: latestPost } = - await apiClient.extension.post.getcontentHaloRunV1alpha1Post({ - name: formState.value.post.metadata.name, - }); - - formState.value.post = latestPost; - - const { data } = await apiClient.post.updateDraftPost({ + const { data } = await apiClient.post.updatePostContent({ name: formState.value.post.metadata.name, - postRequest: formState.value, + content: formState.value.content, }); formState.value.post = data; @@ -106,9 +98,12 @@ const handleSave = async () => { name.value = data.metadata.name; } + Toast.success("保存成功"); + await handleFetchContent(); } catch (e) { console.error("Failed to save post", e); + Toast.error("保存失败,请重试"); } finally { saving.value = false; } @@ -122,28 +117,15 @@ const handlePublish = async () => { formState.value.content.content = formState.value.content.raw; if (isUpdateMode.value) { - const { headSnapshot } = formState.value.post.spec; const { name: postName } = formState.value.post.metadata; - const { data: latestContent } = - await apiClient.content.updateSnapshotContent({ - snapshotName: headSnapshot as string, - contentRequest: { - raw: formState.value.content.raw as string, - content: formState.value.content.content as string, - rawType: formState.value.content.rawType as string, - headSnapshotName: headSnapshot, - subjectRef: { - kind: "Post", - version: "v1alpha1", - group: "content.halo.run", - name: postName, - }, - }, - }); + + await apiClient.post.updatePostContent({ + name: postName, + content: formState.value.content, + }); await apiClient.post.publishPost({ name: postName, - headSnapshot: latestContent.snapshotName, }); } else { const { data } = await apiClient.post.draftPost({ @@ -155,9 +137,12 @@ const handlePublish = async () => { }); } + Toast.success("发布成功", { duration: 2000 }); + router.push({ name: "Posts" }); } catch (error) { console.error("Failed to publish post", error); + Toast.error("发布失败,请重试"); } finally { publishing.value = false; } diff --git a/src/modules/contents/posts/components/PostSettingModal.vue b/src/modules/contents/posts/components/PostSettingModal.vue index 3855d990f..cb065ff63 100644 --- a/src/modules/contents/posts/components/PostSettingModal.vue +++ b/src/modules/contents/posts/components/PostSettingModal.vue @@ -20,7 +20,6 @@ const initialFormState: Post = { pinned: false, allowComment: true, visible: "PUBLIC", - version: 1, priority: 0, excerpt: { autoGenerate: true,