OP de advertencias no resaltado con color de Staff

Prioridad/Severidad: normal

Plataforma: al menos en escritorio y móvil

Descripción: Cuando los moderadores envían una advertencia a un usuario, recuerdo que en la versión de Discourse de hace al menos 1 año, el OP de la advertencia debía tener un fondo resaltado con el Color del Personal. Pero usando Discourse v3.5.0.beta9, el OP tiene el fondo normal.

Pasos reproducibles: Envía una advertencia a un usuario en Discourse v3.5.0.beta9.

2 Me gusta

Mismo problema. Me pregunto si es un error o está previsto.

1 me gusta

Creo que este puede haber sido un cambio intencional. @hugh probablemente lo sabría.

1 me gusta

Hola a todos,

Estaba investigando por qué los primeros mensajes de advertencia (warning) en mensajes privados perdían su estilo de color de staff después de la migración del flujo de publicaciones a Glimmer, y quería compartir lo que encontré: parece ser un pequeño olvido más que un cambio intencional (al menos en el lado del código).

El problema

En post.gjs (línea 436), la clase CSS de moderador se aplica en función de:

(if
  (or @post.isModeratorAction (and @post.isWarning @post.firstPost))
  "post--moderator moderator"
  "post--regular regular"
)

@post.isModeratorAction funciona correctamente: es un getter adecuado en el modelo Post. Pero @post.isWarning no existe en absoluto en el modelo Post.

No se define ninguna propiedad, getter ni campo rastreado isWarning allí. Por lo tanto, la condición (and @post.isWarning @post.firstPost) siempre evalúa como false, y la clase moderator nunca se aplica a los primeros mensajes de advertencia en mensajes privados.

Cómo funcionaba antes

En el antiguo sistema de widgets, transformPost (transform-post.js) mapeaba explícitamente la bandera de nivel de tema a los atributos de la publicación:

postAtts.isWarning = topic.is_warning;

Luego, widgets/post.js verificaba attrs.isWarning && attrs.firstPost para aplicar la clase moderator. Este puente se perdió durante la migración a Glimmer.

Mi interpretación

Dado que post.gjs hace referencia activa a @post.isWarning, parece que la intención era preservar este comportamiento. Si eliminar el color de staff de las advertencias fue intencional, entonces la rama (and @post.isWarning @post.firstPost) en post.gjs es código muerto y podría limpiarse. Si es un error (lo cual parece más probable dado el código antiguo de widgets), la corrección sería un pequeño getter en el modelo Post:

get isWarning() {
  return this.topic?.is_warning;
}

Quería consultar la opinión del equipo: ¿esto parece ser un olvido de la migración a Glimmer, o se omitió intencionalmente? En cualquier caso, podría valer la pena abordar la referencia muerta a @post.isWarning en post.gjs.

¡Gracias!

3 Me gusta

Es interesante la forma en que se escribió el código. Espero que alguien del equipo pueda responder a tu pregunta allí sobre si hubo una omisión o si se escribió así por alguna otra razón.

2 Me gusta

Gran informe, gracias, es exactamente como lo describiste. Estoy aplicando una corrección aquí:

2 Me gusta