경고의 작성자가 스태프 색상으로 강조되지 않음

우선순위/심각도: 일반

플랫폼: 데스크톱 및 모바일에서 최소한 발생

설명: 관리자가 사용자에게 경고 메시지를 보낼 때, 1년 전의 Discourse 버전에서는 경고 메시지의 게시자가 스태프 색상으로 강조된 배경을 가진다고 기억합니다. 하지만 Discourse v3.5.0.beta9를 사용하면 게시자의 배경이 일반 배경으로 표시됩니다.

재현 단계: Discourse v3.5.0.beta9에서 사용자에게 경고 메시지를 보내세요.

2개의 좋아요

Same issue. Wonder if it’s a bug or intended.

1개의 좋아요

I feel like this may have been an intentional change @hugh would probably know.

1개의 좋아요

안녕하세요,

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.isWarningPost 모델에 전혀 존재하지 않습니다.

거기에는 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에 대한 죽은 참조는 해결해 볼 가치가 있을 것입니다.

감사합니다!

3개의 좋아요

코드가 작성된 방식이 흥미롭네요. 팀 중 누군가가 해당 질문에 답해 주셨으면 좋겠어요. 그 부분이 실수로 그렇게 된 건지, 아니면 다른 이유로 그렇게 작성된 건지 확인해 주시면 좋겠습니다.

2개의 좋아요

좋은 보고 감사합니다. 말씀하신 대로 정확합니다. 여기서 수정을 적용하고 있습니다:

2개의 좋아요