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!