Skip to content

Commit

Permalink
fix: 优化一些属性合并逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
terwer committed Aug 31, 2023
1 parent 704241b commit f8719c7
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 5 deletions.
32 changes: 31 additions & 1 deletion src/adaptors/api/gitlab-hexo/gitlabHexoApiAdaptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,10 @@
* questions.
*/

import { YamlConvertAdaptor } from "zhi-blog-api"
import { BlogConfig, PageTypeEnum, Post, YamlConvertAdaptor } from "zhi-blog-api"
import { GitlabHexoYamlConverterAdaptor } from "~/src/adaptors/api/gitlab-hexo/gitlabHexoYamlConverterAdaptor.ts"
import { CommonGitlabApiAdaptor } from "~/src/adaptors/api/base/gitlab/commonGitlabApiAdaptor.ts"
import _ from "lodash"

/**
* Hexo API 适配器
Expand All @@ -38,6 +39,35 @@ class GitlabHexoApiAdaptor extends CommonGitlabApiAdaptor {
public override getYamlAdaptor(): YamlConvertAdaptor {
return new GitlabHexoYamlConverterAdaptor()
}

public override async preEditPost(post: Post, id?: string, publishCfg?: any): Promise<Post> {
// 公共的属性预处理
const doc = await super.preEditPost(post, id, publishCfg)

// HEXO 自带的处理
const cfg: BlogConfig = publishCfg?.cfg
const updatedPost = _.cloneDeep(doc) as Post

// 自定义处理
// 成功提示、信息提示、警告提示、错误提示
const md = updatedPost.markdown
this.logger.info("准备处理 Gitlabhexo 正文")
this.logger.debug("md =>", { md: md })
let updatedMd = md

updatedPost.markdown = updatedMd
this.logger.info("Gitlabhexo 正文处理完毕")
this.logger.debug("updatedMd =>", { updatedMd: updatedMd })

throw new Error("开发中")
// 发布格式
if (cfg?.pageType == PageTypeEnum.Markdown) {
post.description = post.markdown
} else {
post.description = post.html
}
return updatedPost
}
}

export { GitlabHexoApiAdaptor }
32 changes: 31 additions & 1 deletion src/adaptors/api/hexo/hexoApiAdaptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@
*/

import { CommonGithubApiAdaptor } from "~/src/adaptors/api/base/github/commonGithubApiAdaptor.ts"
import { YamlConvertAdaptor } from "zhi-blog-api"
import { BlogConfig, PageTypeEnum, Post, YamlConvertAdaptor } from "zhi-blog-api"
import { HexoYamlConverterAdaptor } from "~/src/adaptors/api/hexo/hexoYamlConverterAdaptor.ts"
import _ from "lodash"

/**
* Hexo API 适配器
Expand All @@ -38,6 +39,35 @@ class HexoApiAdaptor extends CommonGithubApiAdaptor {
public override getYamlAdaptor(): YamlConvertAdaptor {
return new HexoYamlConverterAdaptor()
}

public override async preEditPost(post: Post, id?: string, publishCfg?: any): Promise<Post> {
// 公共的属性预处理
const doc = await super.preEditPost(post, id, publishCfg)

// HEXO 自带的处理
const cfg: BlogConfig = publishCfg?.cfg
const updatedPost = _.cloneDeep(doc) as Post

// 自定义处理
// 信息、警告、错误
const md = updatedPost.markdown
this.logger.info("准备处理 Hexo 正文")
this.logger.debug("md =>", { md: md })
let updatedMd = md

updatedPost.markdown = updatedMd
this.logger.info("Hexo 正文处理完毕")
this.logger.debug("updatedMd =>", { updatedMd: updatedMd })

throw new Error("开发中")
// 发布格式
if (cfg?.pageType == PageTypeEnum.Markdown) {
post.description = post.markdown
} else {
post.description = post.html
}
return updatedPost
}
}

export { HexoApiAdaptor }
18 changes: 15 additions & 3 deletions src/composables/usePublish.ts
Original file line number Diff line number Diff line change
Expand Up @@ -426,12 +426,12 @@ const usePublish = () => {
let postPreviewUrl: string = ""
let mergedPost = {} as Post

// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
if (method === MethodEnum.METHOD_ADD) {
logger.info("Add, using siyuan post")
// 思源笔记原始文章数据
const siyuanPost = await blogApi.getPost(id)
mergedPost = _.cloneDeep(siyuanPost) as Post
// 更新属性
mergedPost = _.cloneDeep(siyuanPost) as Post
mergedPost.mt_keywords = mergedPost?.mt_keywords ?? ""
mergedPost.categories = mergedPost?.categories ?? []
} else {
Expand All @@ -443,6 +443,12 @@ const usePublish = () => {
// 查询平台文章
const platformPost = await api.getPost(postid)
mergedPost = _.cloneDeep(platformPost) as Post
// 正文需要使用思源笔记的
mergedPost.markdown = siyuanPost.markdown
mergedPost.html = siyuanPost.html
mergedPost.description = siyuanPost.description
// 标签分类需要合并
mergedPost = initPublishMethods.doMergeBatchPost(siyuanPost, mergedPost)

// 更新预览链接
postPreviewUrl = await getPostPreviewUrl(api, postid, cfg)
Expand Down Expand Up @@ -472,6 +478,12 @@ const usePublish = () => {
// 复制原始 newPost 对象以避免直接修改它
const mergedPost = _.cloneDeep(newPost) as Post

// 摘要
if(StrUtil.isEmptyString(newPost.shortDesc) && StrUtil.isEmptyString(newPost.mt_excerpt)){
mergedPost.shortDesc = post.shortDesc
mergedPost.mt_excerpt = post.mt_excerpt
}

const postKeywords = post.mt_keywords.split(",")
const newPostKeywords = newPost.mt_keywords.split(",")
// 合并并去重关键词
Expand Down

0 comments on commit f8719c7

Please sign in to comment.