diff --git a/package.json b/package.json index db152bfa..cc4b0906 100644 --- a/package.json +++ b/package.json @@ -72,14 +72,14 @@ "vue-i18n": "^9.2.2", "vue-router": "^4.2.4", "xmlbuilder2": "^3.1.1", - "zhi-blog-api": "^1.34.2", - "zhi-common": "^1.23.1", + "zhi-blog-api": "^1.34.6", + "zhi-common": "^1.23.2", "zhi-device": "^2.3.1", - "zhi-fetch-middleware": "^0.3.5", - "zhi-github-middleware": "^0.3.5", + "zhi-fetch-middleware": "^0.3.6", + "zhi-github-middleware": "^0.3.6", "zhi-lib-base": "^0.4.4", "zhi-notion-markdown": "^0.1.4", - "zhi-siyuan-api": "^2.5.5", - "zhi-xmlrpc-middleware": "^0.5.5" + "zhi-siyuan-api": "^2.5.9", + "zhi-xmlrpc-middleware": "^0.5.6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b5cf6fc..b4509efd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,20 +66,20 @@ dependencies: specifier: ^3.1.1 version: 3.1.1 zhi-blog-api: - specifier: ^1.34.2 - version: 1.34.2 + specifier: ^1.34.6 + version: 1.34.6 zhi-common: - specifier: ^1.23.1 - version: 1.23.1 + specifier: ^1.23.2 + version: 1.23.2 zhi-device: specifier: ^2.3.1 version: 2.3.1 zhi-fetch-middleware: - specifier: ^0.3.5 - version: 0.3.5 + specifier: ^0.3.6 + version: 0.3.6 zhi-github-middleware: - specifier: ^0.3.5 - version: 0.3.5 + specifier: ^0.3.6 + version: 0.3.6 zhi-lib-base: specifier: ^0.4.4 version: 0.4.4 @@ -87,11 +87,11 @@ dependencies: specifier: ^0.1.4 version: 0.1.4 zhi-siyuan-api: - specifier: ^2.5.5 - version: 2.5.5 + specifier: ^2.5.9 + version: 2.5.9 zhi-xmlrpc-middleware: - specifier: ^0.5.5 - version: 0.5.5 + specifier: ^0.5.6 + version: 0.5.6 devDependencies: '@terwer/esbuild-config-custom': @@ -6401,11 +6401,11 @@ packages: vue: 3.3.4 vue-i18n: 9.2.2(vue@3.3.4) vue-router: 4.2.4(vue@3.3.4) - zhi-common: 1.23.1 + zhi-common: 1.23.2 zhi-device: 2.3.1 zhi-fetch-middleware: 0.2.29 zhi-lib-base: 0.4.4 - zhi-siyuan-api: 2.5.5 + zhi-siyuan-api: 2.5.9 transitivePeerDependencies: - '@vue/composition-api' - typescript @@ -7647,10 +7647,10 @@ packages: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - /zhi-blog-api@1.34.2: - resolution: {integrity: sha512-5lQwo+fmeEHSND5Jl1HSt1RNgrCYhryTWxHarb0NdrRJ6uMWPniKKgi2ksSbvrD/nNWfQ82H5TUexbwcuzcP8g==} + /zhi-blog-api@1.34.6: + resolution: {integrity: sha512-wUDBTyy+amq0TxsR4nph/g8rRKhkTlI3xT8HEfxxzgPSUMWwQrXI3xpAH0Rm+6yJkChE+ezh+tcrkIH60TbA9g==} dependencies: - zhi-common: 1.23.1 + zhi-common: 1.23.2 zhi-lib-base: 0.4.4 dev: false @@ -7664,8 +7664,8 @@ packages: zhi-lib-base: 0.4.4 dev: false - /zhi-common@1.23.1: - resolution: {integrity: sha512-WvITHbbcehoNJdMPJhjbMQVeAcZMwaTewIszidxPFras0VALZAZn6/Lbgwb9fHy441QlIkUe0KLUUQQ6drforw==} + /zhi-common@1.23.2: + resolution: {integrity: sha512-TGOu+d2LIyh+1NIUKBg1WzBiHy1UTsOICxSS9ubJaHl0Qp9fL8wSm2LuNWb5iCw6OUCHlq96hIlZRwJccXwuPQ==} dependencies: js-yaml: 4.1.0 shorthash2: 1.0.3 @@ -7686,20 +7686,20 @@ packages: zhi-lib-base: 0.4.4 dev: false - /zhi-fetch-middleware@0.3.5: - resolution: {integrity: sha512-/LPOYr/myIhHuJPbQEb3dZaoZOeV9zpi/Fv0g2ogcoLvraIIkRcNU6EJBiqOvxpvx8NRsDX8ZmEumwJIEdXunA==} + /zhi-fetch-middleware@0.3.6: + resolution: {integrity: sha512-uPXKGux8jFgnMCpbjdkQMyvG9Wr2trtulofKA7fNMy1b0/RN9JVRf8S8lkj7AnVsI33RfQZirUq0kMJdAWd4zg==} dependencies: - zhi-common: 1.23.1 + zhi-common: 1.23.2 zhi-device: 2.3.1 zhi-lib-base: 0.4.4 dev: false - /zhi-github-middleware@0.3.5: - resolution: {integrity: sha512-MizdKNJvRf7XvX/sUZniKVKQPNmstkw2TSmd5BiYhoaaAzTcYnONStllvOzLJjexqJh7eUMclUQzW5l+GZU2Wg==} + /zhi-github-middleware@0.3.6: + resolution: {integrity: sha512-Xl0crGpQnURGfQCx9tKW2/M2Kdw7tUU3ajV7DdkmA46rzQH9bXTE3pEGuuJQrAVxSulQwdAN2oPWr2LuV7N3jw==} dependencies: '@octokit/core': 5.0.0 js-base64: 3.7.5 - zhi-common: 1.23.1 + zhi-common: 1.23.2 zhi-lib-base: 0.4.4 dev: false @@ -7717,18 +7717,18 @@ packages: - supports-color dev: false - /zhi-siyuan-api@2.5.5: - resolution: {integrity: sha512-s5ZVzYO1qvD20pfft04mStOf81ZCeaXsDNvmT4lRU/eVAMkJCSYBthdPRxImu0Qa5+pG7MPK/Fs17QpyhA1bMg==} + /zhi-siyuan-api@2.5.9: + resolution: {integrity: sha512-9Y17iIJ7ORVTIpzrD1rTrsuYZ5m2QfU6CiA48cIs0W3pSjFsiDT3cOm19QTWwAILexzBVUzX0Sh8+pc1+i+L3g==} dependencies: - zhi-blog-api: 1.34.2 - zhi-common: 1.23.1 + zhi-blog-api: 1.34.6 + zhi-common: 1.23.2 zhi-lib-base: 0.4.4 dev: false - /zhi-xmlrpc-middleware@0.5.5: - resolution: {integrity: sha512-j1OTT2vIjP3SovcuA6NtPEXssOLESMO6xepBvffeZ0pbFcS8KHBVUGz38djeFpnRleofNSvab7d7gDKk71YVRA==} + /zhi-xmlrpc-middleware@0.5.6: + resolution: {integrity: sha512-BOdlN9Aam/jN35he/AMloAjpejhanCqU/ogXmumrphwrevSCMRR92YQ7XLZKDv1TILLkCSo2WFGmGUD6h7XBhg==} dependencies: - zhi-common: 1.23.1 + zhi-common: 1.23.2 zhi-device: 2.3.1 zhi-lib-base: 0.4.4 dev: false diff --git a/src/adaptors/api/base/baseBlogApi.ts b/src/adaptors/api/base/baseBlogApi.ts index 2b3020ee..5f925569 100644 --- a/src/adaptors/api/base/baseBlogApi.ts +++ b/src/adaptors/api/base/baseBlogApi.ts @@ -60,7 +60,7 @@ export class BaseBlogApi extends BlogApi { } public getYamlAdaptor(): YamlConvertAdaptor { - return this.baseExtendApi.getYamlAdaptor() + return null } public async preEditPost(post: Post, id?: string, publishCfg?: any): Promise { diff --git a/src/adaptors/api/hexo/hexoYamlConverterAdaptor.ts b/src/adaptors/api/hexo/hexoYamlConverterAdaptor.ts index 617ef6c9..838469a0 100644 --- a/src/adaptors/api/hexo/hexoYamlConverterAdaptor.ts +++ b/src/adaptors/api/hexo/hexoYamlConverterAdaptor.ts @@ -113,6 +113,7 @@ export class HexoYamlConverterAdaptor extends YamlConvertAdaptor { yamlFormatObj.mdFullContent = YamlUtil.addYamlToMd(yamlFormatObj.formatter, yamlFormatObj.mdContent) yamlFormatObj.htmlContent = post.html this.logger.info("生成默认的YAML") + return yamlFormatObj } diff --git a/src/adaptors/base/baseExtendApi.ts b/src/adaptors/base/baseExtendApi.ts index 58ef87aa..e81dbab8 100644 --- a/src/adaptors/base/baseExtendApi.ts +++ b/src/adaptors/base/baseExtendApi.ts @@ -71,11 +71,6 @@ class BaseExtendApi extends WebApi implements IBlogApi, IWebApi { this.kernelApi = kernelApi } - public getYamlAdaptor(): YamlConvertAdaptor { - this.logger.info("return default yaml adaptor null, you may implement it in sub class for custom") - return null - } - /** * 在保存前编辑文章 * @@ -97,7 +92,7 @@ class BaseExtendApi extends WebApi implements IBlogApi, IWebApi { // ================ private async handleYaml(post: Post, id?: string, publishCfg?: any) { const cfg: BlogConfig = publishCfg?.cfg - const yamlAdaptor: YamlConvertAdaptor = this.getYamlAdaptor() + const yamlAdaptor: YamlConvertAdaptor = this.api.getYamlAdaptor() if (null !== yamlAdaptor) { // 先生成对应平台的yaml const yamlObj: YamlFormatObj = yamlAdaptor.convertToYaml(post, cfg) @@ -110,10 +105,10 @@ class BaseExtendApi extends WebApi implements IBlogApi, IWebApi { // 同步发布内容 const yamlObj = post.toYamlObj() const yaml = YamlUtil.obj2Yaml(yamlObj) - const md = post.markdown + const md = YamlUtil.extractMarkdown(post.markdown) post.yaml = yaml - post.markdown = YamlUtil.addYamlToMd(yaml, md) - post.html = LuteUtil.mdToHtml(post.markdown) + post.markdown = md + post.html = LuteUtil.mdToHtml(md) this.logger.info("yaml adaptor not found, using default") } diff --git a/src/adaptors/web/base/baseWebApi.ts b/src/adaptors/web/base/baseWebApi.ts index 49183f4d..75fcc4b8 100644 --- a/src/adaptors/web/base/baseWebApi.ts +++ b/src/adaptors/web/base/baseWebApi.ts @@ -69,7 +69,7 @@ class BaseWebApi extends WebApi { } public getYamlAdaptor(): YamlConvertAdaptor { - return this.baseExtendApi.getYamlAdaptor() + return null } public async preEditPost(post: Post, id?: string, publishCfg?: any): Promise { diff --git a/src/components/publish/BatchPublishIndex.vue b/src/components/publish/BatchPublishIndex.vue index df0e3072..75a1d318 100644 --- a/src/components/publish/BatchPublishIndex.vue +++ b/src/components/publish/BatchPublishIndex.vue @@ -103,8 +103,6 @@ const formData = reactive({ // ========================= // sync attrs end // ========================= - - distriPattern: DistributionPattern.Override, actionEnable: true, }) @@ -134,15 +132,6 @@ const handlePublish = async () => { // 平台相关的元数据初始化 batchItemPost = await initPublishMethods.assignInitAttrs(siyuanPost, id, formData.publishCfg) - - // 合并属性 - if (formData.distriPattern === DistributionPattern.Merge) { - batchItemPost = initPublishMethods.doMergeBatchPost(siyuanPost, batchItemPost) - logger.debug("批量分发模式文章已合并", { - siyuanPost: toRaw(siyuanPost), - mergedPost: toRaw(batchItemPost), - }) - } } const batchResult = await doSinglePublish(key, id, formData.publishCfg, batchItemPost) @@ -162,8 +151,13 @@ const handlePublish = async () => { } else { ElMessage.error(`多平台文章分发失败,失败个数:${formData.errCount}`) } - } catch (error) { - ElMessage.error(error.message) + } catch (e) { + const errMsg = t("main.opt.failure") + "=>" + e + logger.error(t("main.opt.failure") + "=>", e) + await kernelApi.pushErrMsg({ + msg: errMsg, + timeout: 7000, + }) } finally { formData.isPublishLoading = false } @@ -221,8 +215,13 @@ const doDelete = async () => { } else { ElMessage.error(`多平台文章删除失败,失败个数:${formData.errCount}`) } - } catch (error) { - ElMessage.error(error.message) + } catch (e) { + const errMsg = t("main.opt.failure") + "=>" + e + logger.error(t("main.opt.failure") + "=>", e) + await kernelApi.pushErrMsg({ + msg: errMsg, + timeout: 7000, + }) } finally { formData.isDeleteLoading = false } @@ -275,7 +274,7 @@ const syncDesc = (val: string) => { } const syncTags = (val: string[]) => { - formData.siyuanPost.mt_keywords = val.join(",") + formData.siyuanPost.mt_keywords = val?.join(",") logger.debug("syncTags in batch publish") } @@ -391,16 +390,6 @@ onMounted(async () => { v-model:md="formData.siyuanPost.markdown" v-model:html="formData.siyuanPost.html" /> - - -
- - - 覆盖 - 合并 - - -
diff --git a/src/components/publish/SinglePublishDoPublish.vue b/src/components/publish/SinglePublishDoPublish.vue index 4b8a2291..00267d04 100644 --- a/src/components/publish/SinglePublishDoPublish.vue +++ b/src/components/publish/SinglePublishDoPublish.vue @@ -291,7 +291,7 @@ const syncDesc = (val: string) => { } const syncTags = (val: string[]) => { - formData.mergedPost.mt_keywords = val.join(",") + formData.mergedPost.mt_keywords = val?.join(",") logger.debug("syncTags in single publish") } diff --git a/src/composables/usePublish.ts b/src/composables/usePublish.ts index 2a3c7a5e..790c8c6f 100644 --- a/src/composables/usePublish.ts +++ b/src/composables/usePublish.ts @@ -471,23 +471,6 @@ const usePublish = () => { postPreviewUrl, } }, - - doMergeBatchPost: (post: Post, newPost: Post): Post => { - // 复制原始 post 对象以避免直接修改它 - const mergedPost = _.cloneDeep(post) as Post - - const postKeywords = post.mt_keywords.split(",") - const newPostKeywords = newPost.mt_keywords.split(",") - // 合并并去重关键词 - const mergedKeywords = [...new Set([...postKeywords, ...newPostKeywords])] - mergedPost.mt_keywords = mergedKeywords.join(",") - - // 合并并去重分类 - const mergedCategories = [...new Set([...post.categories, ...newPost.categories])] - mergedPost.categories = mergedCategories - - return mergedPost - }, } return {