覆盖 save() 时 modifyClass("model:composer") 的推荐替代方案

最佳方案是在 Discourse 核心中添加一个新的钩子(hook),以便你能够以受支持的方式实现所需的功能。类似这样的实现如何:

这样,你的插件就可以执行以下操作:

api.registerValueTransformer(
  "composer-minimum-post-length",
  ({ value, context: { composer } }) => {
    if (
      composer.siteSettings.discourse_optional_topic_body_enabled &&
      composer.topicFirstPost
    ) {
      return 0;
    }

    return value; // 保留核心逻辑
  }
);

如果这符合你的使用场景,请告诉我,我会将该 PR 从草稿状态移除,并推动其进行审查和合并。