우선순위/심각도: 일반
플랫폼: 데스크톱 및 모바일에서 최소한 발생
설명: 관리자가 사용자에게 경고 메시지를 보낼 때, 1년 전의 Discourse 버전에서는 경고 메시지의 게시자가 스태프 색상으로 강조된 배경을 가진다고 기억합니다. 하지만 Discourse v3.5.0.beta9를 사용하면 게시자의 배경이 일반 배경으로 표시됩니다.
재현 단계: Discourse v3.5.0.beta9에서 사용자에게 경고 메시지를 보내세요.
우선순위/심각도: 일반
플랫폼: 데스크톱 및 모바일에서 최소한 발생
설명: 관리자가 사용자에게 경고 메시지를 보낼 때, 1년 전의 Discourse 버전에서는 경고 메시지의 게시자가 스태프 색상으로 강조된 배경을 가진다고 기억합니다. 하지만 Discourse v3.5.0.beta9를 사용하면 게시자의 배경이 일반 배경으로 표시됩니다.
재현 단계: Discourse v3.5.0.beta9에서 사용자에게 경고 메시지를 보내세요.
Same issue. Wonder if it’s a bug or intended.
I feel like this may have been an intentional change @hugh would probably know.
안녕하세요,
Glimmer 포스트 스트림 마이그레이션 이후 경고 PM 첫 게시글의 스태프 색상 스타일링이 사라진 이유를 조사하다가, 발견한 내용을 공유하고자 합니다. 의도적인 변경보다는 작은 실수로 보입니다 (적어도 코드 측면에서는요).
문제점
post.gjs (436번째 줄)에서 관리자 CSS 클래스는 다음 조건에 따라 적용됩니다:
(if
(or @post.isModeratorAction (and @post.isWarning @post.firstPost))
"post--moderator moderator"
"post--regular regular"
)
@post.isModeratorAction은 올바르게 작동합니다. 이는 Post 모델의 적절한 getter입니다. 하지만 @post.isWarning은 Post 모델에 전혀 존재하지 않습니다.
거기에는 isWarning 프로퍼티, getter, 또는 트래킹 필드가 정의되어 있지 않습니다. 따라서 (and @post.isWarning @post.firstPost) 조건은 항상 false로 평가되며, 경고 PM 첫 게시글에는 moderator 클래스가 적용되지 않습니다.
이전 동작 방식
구형 위젯 시스템에서는 transformPost (transform-post.js)가 토픽 수준의 플래그를 게시글 속성으로 명시적으로 매핑했습니다:
postAtts.isWarning = topic.is_warning;
그런 다음 widgets/post.js에서 attrs.isWarning && attrs.firstPost를 확인하여 moderator 클래스를 적용했습니다. 이 연결고리가 Glimmer 마이그레이션 중에 사라졌습니다.
제 분석
post.gjs가 @post.isWarning을 능동적으로 참조하고 있으므로, 이 동작을 유지하려는 의도였던 것으로 보입니다. 경고에 대한 스태프 색상을 제거하는 것이 의도적이었다면, post.gjs의 (and @post.isWarning @post.firstPost) 분기는 죽은 코드(dead code)이며 정리할 수 있습니다. 버그라면 (구형 위젯 코드에 비추어 볼 때 더 그럴 가능성이 높습니다), 수정 방법은 Post 모델에 작은 getter를 추가하는 것입니다:
get isWarning() {
return this.topic?.is_warning;
}
팀의 의견을 듣고 싶었습니다 — 이것이 Glimmer 마이그레이션에서 발생한 실수인지, 아니면 의도적으로 제외된 것인지는 어떻게 보시나요? 어느 쪽이든, post.gjs의 @post.isWarning에 대한 죽은 참조는 해결해 볼 가치가 있을 것입니다.
감사합니다!
코드가 작성된 방식이 흥미롭네요. 팀 중 누군가가 해당 질문에 답해 주셨으면 좋겠어요. 그 부분이 실수로 그렇게 된 건지, 아니면 다른 이유로 그렇게 작성된 건지 확인해 주시면 좋겠습니다.
좋은 보고 감사합니다. 말씀하신 대로 정확합니다. 여기서 수정을 적용하고 있습니다: