Ciao a tutti,
Stavo indagando sul motivo per cui i primi messaggi dei PM di avviso hanno perso lo stile del colore dello staff dopo la migrazione del flusso dei post a Glimmer, e volevo condividere ciò che ho scoperto: sembra essere una piccola svista piuttosto che un cambiamento intenzionale (almeno dal punto di vista del codice).
Il problema
In post.gjs (riga 436), la classe CSS per i moderatori viene applicata in base a:
(if
(or @post.isModeratorAction (and @post.isWarning @post.firstPost))
"post--moderator moderator"
"post--regular regular"
)
@post.isModeratorAction funziona correttamente: è un getter appropriato nel modello Post. Ma @post.isWarning non esiste affatto nel modello Post.
Non è definita alcuna proprietà, getter o campo tracciato isWarning lì. Quindi la condizione (and @post.isWarning @post.firstPost) valuta sempre a false, e la classe moderator non viene mai applicata ai primi messaggi dei PM di avviso.
Come funzionava prima
Nel vecchio sistema di widget, transformPost (transform-post.js) mappava esplicitamente il flag a livello di topic agli attributi del post:
postAtts.isWarning = topic.is_warning;
Poi widgets/post.js controllava attrs.isWarning && attrs.firstPost per applicare la classe moderator. Questo ponte è stato perso durante la migrazione a Glimmer.
La mia opinione
Poiché post.gjs fa riferimento attivo a @post.isWarning, sembra che l’intenzione fosse di preservare questo comportamento. Se la rimozione del colore dello staff dagli avvisi era intenzionale, allora il ramo (and @post.isWarning @post.firstPost) in post.gjs è codice morto e potrebbe essere ripulito. Se si tratta di un bug (il che sembra più probabile dato il codice del vecchio widget), la correzione sarebbe un piccolo getter nel modello Post:
get isWarning() {
return this.topic?.is_warning;
}
Volevo verificare l’opinione del team: questo sembra essere un’omissione dalla migrazione a Glimmer, o è stato intenzionalmente lasciato fuori? In ogni caso, il riferimento morto a @post.isWarning in post.gjs potrebbe valere la pena di essere affrontato.
Grazie!