OP de avisos não destacados com cor de Staff

Olá, pessoal,

Estava investigando por que as primeiras mensagens de avisos (warnings) em MP perdiam a formatação de cores da equipe após a migração do fluxo de posts para Glimmer, e queria compartilhar o que encontrei — parece ser uma pequena falha em vez de uma mudança intencional (pelo menos no lado do código).

O problema

Em post.gjs (linha 436), a classe CSS de moderador é aplicada com base em:

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

@post.isModeratorAction funciona corretamente — é um getter adequado no modelo Post. Mas @post.isWarning não existe no modelo Post de forma alguma.

Nenhuma propriedade isWarning, getter ou campo rastreado está definido lá. Portanto, a condição (and @post.isWarning @post.firstPost) sempre avalia como false, e a classe moderator nunca é aplicada às primeiras mensagens de avisos em MP.

Como funcionava antes

No antigo sistema de widgets, transformPost (transform-post.js) mapeava explicitamente a flag de nível de tópico para os atributos do post:

postAtts.isWarning = topic.is_warning;

Então widgets/post.js verificava attrs.isWarning && attrs.firstPost para aplicar a classe moderator. Essa ponte foi perdida durante a migração para Glimmer.

Minha interpretação

Como post.gjs referencia ativamente @post.isWarning, parece que a intenção era preservar esse comportamento. Se remover a cor da equipe dos avisos foi intencional, então o ramo (and @post.isWarning @post.firstPost) em post.gjs é código morto e pode ser limpo. Se for um bug (o que parece mais provável dado o código antigo do widget), a correção seria um pequeno getter no modelo Post:

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

Queria verificar a opinião da equipe — isso parece uma falha da migração para Glimmer, ou foi intencionalmente omitido? De qualquer forma, a referência morta a @post.isWarning em post.gjs pode valer a pena ser tratada.

Obrigado!

3 curtidas