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.
Таким образом, вам достаточно проверить, истинно ли это значение, и добавить свой класс, если оно истинно. Вот как это делается:
api.addPostClassesCallback((attrs) => {
if (attrs.accepted_answer) return ["topic-solution"];
});
Этого достаточно, чтобы переключать класс даже в том случае, если автор темы передумает и выберет другое решение. Класс будет удалён из старого ответа и добавлен к новому.
