L'OP degli avvisi non evidenziato con il colore dello Staff

Priorità/Gravità: normale

Piattaforma: almeno su desktop e mobile

Descrizione: Quando i moderatori inviano un avviso a un utente, ricordo che nella versione DIscourse di almeno 1 anno fa, l’OP dell’avviso doveva essere evidenziato in background con il Colore Staff. Ma utilizzando Discourse v3.5.0.beta9, l’OP ha lo sfondo normale.

Passaggi riproducibili: Invia un avviso a un utente su Discourse v3.5.0.beta9.

2 Mi Piace

Stesso problema. Mi chiedo se sia un bug o se sia intenzionale.

1 Mi Piace

Penso che questo possa essere stato un cambiamento intenzionale, @hugh probabilmente lo saprebbe.

1 Mi Piace

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!

3 Mi Piace

È interessante il modo in cui è stato scritto il codice; spero che qualcuno del team possa rispondere alla tua domanda lì, per chiarire se si è trattato di una distrazione o se è stato scritto così per qualche altro motivo.

2 Mi Piace

Ottimo report, grazie, è esattamente come hai descritto. Sto applicando una correzione qui:

2 Mi Piace