Halo 发布功能修复说明

问题描述

之前的 Halo 发布功能存在问题:文章发布成功后,在 Halo 中没有文章内容。

问题原因3

根据 Halo 社区讨论和 VSCode 扩展的实现,发现问题在于:

  1. 文章创建和内容上传的流程不正确
  2. 编辑器类型设置不当
  3. 发布流程缺少明确的步骤分离

修复方案

1. 修改发布流程3

将原来的一步发布改为三步流程:

  • 第一步:创建草稿文章 (createHaloPost)
  • 第二步:上传文章内容 (sendContentToHalo)
  • 第三步:发布文章 (publishHaloPost)

2. 修复编辑器类型

// 修改前
annotations: {
  'content.halo.run/preferred-editor': 'bytemd'
}

// 修改后
annotations: {
  'content.halo.run/preferred-editor': 'default'
}

3. 修复文章创建逻辑

// 修改前:直接设置发布状态
publish: this.settings.haloAutoPublish

// 修改后:先创建为草稿,再单独发布
publish: false, // 先创建为草稿

4. 增强错误处理

  • 为每个步骤添加独立的错误处理
  • 改进重试机制
  • 更详细的日志记录

主要代码变更

新增方法

  • createHaloPost(): 专门用于创建文章
  • publishHaloPost(): 专门用于发布文章

修改的接口

  • HaloPost: 添加 annotations 支持
  • 添加 HaloApiResponse 类型别名

修改的流程

  1. 创建文章时设置 publish: false
  2. 上传内容后再根据设置决定是否发布
  3. 每个步骤都有独立的成功/失败处理

参考资料

测试建议4

  1. 创建一个测试文章
  2. 使用发布到 Halo 功能
  3. 检查 Halo 后台是否有内容
  4. 验证自动发布功能是否正常工作 Pasted image 20250722103538.png

注意事项

  • 确保 Halo 配置正确(URL 和 Token)
  • 检查网络连接
  • 查看控制台日志以获取详细错误信息

Q.E.D.