TL;DR
これにより、回答としてマークされた投稿に topic-solution クラスが追加されます。
api.addPostClassesCallback((attrs) => {
if (attrs.accepted_answer) return ["topic-solution"];
});
投稿に適用されるクラスは、ここで決定されます。
お探しのフックは、そのファイルの非常に末尾に既に存在します。以下の通りです。
plugin-api には、条件に基づいて投稿にクラスを追加できるメソッドがあります。
このメソッドは、指定されたコールバックを実行し、条件が満たされた場合に追加すべきクラスを返します。
コールバックが実行されると、Discourse は投稿の属性を渡します。したがって、例えば以下のような処理が可能です。
api.addPostClassesCallback((attrs) => {
console.log(attrs);
});
コンソールを確認すると、各投稿の属性が表示されていることがわかります。
これらは単なる例であり、実際にはもっと多くの属性が含まれています。
幸運なことに、投稿が回答としてマークされると、Discourse はそれを追跡し、その情報を投稿の属性に追加します。そのプロパティ名は accepted_answer です。
したがって、その値が true かどうかを確認し、true の場合にカスタムクラスを追加するだけで済みます。以下の通りです。
api.addPostClassesCallback((attrs) => {
if (attrs.accepted_answer) return ["topic-solution"];
});
これで、OP が考えを変えて別の回答を選ぶ場合でも、クラスを適切に切り替えることができます。古い回答からはクラスが削除され、新しい回答に追加されます。
