Hallo zusammen,
ich habe untersucht, warum Warnungs-PMs nach der Migration zum Glimmer-Post-Stream ihre farbliche Hervorhebung für Mitarbeiter verloren haben, und möchte meine Erkenntnisse teilen – es sieht nach einer kleinen Übersehenheit aus, eher als nach einer beabsichtigten Änderung (zumindest auf der Code-Ebene).
Das Problem
In post.gjs (Zeile 436) wird die CSS-Klasse für Moderatoren basierend auf Folgendem angewendet:
(if
(or @post.isModeratorAction (and @post.isWarning @post.firstPost))
"post--moderator moderator"
"post--regular regular"
)
@post.isModeratorAction funktioniert korrekt – es ist ein korrekter Getter im Post-Modell. Aber @post.isWarning existiert im Post-Modell überhaupt nicht.
Es gibt keine isWarning-Eigenschaft, keinen Getter oder kein getracktes Feld. Daher wird die Bedingung (and @post.isWarning @post.firstPost) immer als false ausgewertet, und die moderator-Klasse wird niemals auf erste Beiträge von Warnungs-PMs angewendet.
Wie es vorher funktionierte
Im alten Widget-System hat transformPost (transform-post.js) explizit das topic-Ebene-Flag auf die Post-Attribute abgebildet:
postAtts.isWarning = topic.is_warning;
Anschließend hat widgets/post.js geprüft, ob attrs.isWarning && attrs.firstPost, um die moderator-Klasse anzuwenden. Diese Brücke ging bei der Glimmer-Migration verloren.
Meine Einschätzung
Da post.gjs aktiv auf @post.isWarning verweist, scheint es so, als ob die Abschaftung dieses Verhaltens beabsichtigt war. Wenn das Entfernen der Mitarbeiterfarbe bei Warnungen beabsichtigt war, dann ist der Zweig (and @post.isWarning @post.firstPost) in post.gjs toter Code und könnte bereinigt werden. Wenn es ein Bug ist (was aufgrund des alten Widget-Codes wahrscheinlicher erscheint), wäre die Lösung ein kleiner Getter im Post-Modell:
get isWarning() {
return this.topic?.is_warning;
}
Ich wollte wissen, was das Team dazu denkt – sieht das nach einer Übersehenheit bei der Glimmer-Migration aus, oder wurde es absichtlich weggelassen? Auf jeden Fall könnte die tote Referenz zu @post.isWarning in post.gjs angegangen werden.
Danke!