How do I customise the styling of "solved topics" in the main list?

TL;DR

Questo aggiungerà una classe topic-solution ai post contrassegnati come risposta.

api.addPostClassesCallback((attrs) => {
  if (attrs.accepted_answer) return ["topic-solution"];
});

Le classi di un post sono determinate qui.

Il hook che ti serve esiste già alla fine di quel file… più o meno così.

Il plugin-api dispone di un metodo che ti permette di aggiungere classi a un post in base a una condizione.

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/lib/plugin-api.js#L819-L829

Ciò che fa è applicare un callback specifico e restituire una classe da aggiungere se la condizione è soddisfatta.

Quando il callback viene attivato, Discourse gli passa gli attributi del post. Quindi, ad esempio, puoi fare qualcosa di simile.

api.addPostClassesCallback((attrs) => {
  console.log(attrs);
});

Se controlli la console, vedrai che vengono visualizzati gli attributi di ciascun post.

Questi sono solo esempi; ce ne sono altri.

Per tua fortuna, quando un post viene contrassegnato come soluzione, Discourse tiene traccia di questo fatto e lo aggiunge agli attributi del post. La proprietà si chiama accepted_answer.

Quindi, devi solo verificare se è vero e aggiungere la tua classe personalizzata in tal caso. Più o meno così:

api.addPostClassesCallback((attrs) => {
  if (attrs.accepted_answer) return ["topic-solution"];
});

Questo dovrebbe essere sufficiente per attivare la classe anche se l’OP cambia idea e sceglie una soluzione diversa. Rimuoverà la classe dalla vecchia risposta e la aggiungerà a quella nuova.