Автор предупреждения не выделен цветом модератора

Приоритет/Серьезность: обычный

Платформа: по крайней мере, на настольных компьютерах и мобильных устройствах

Описание: Когда модераторы отправляют предупреждение пользователю, я помню, что в версии Discourse как минимум год назад заголовок (OP) предупреждения должен был иметь фон, выделенный цветом сотрудника. Однако в версии Discourse v3.5.0.beta9 заголовок имеет обычный фон.

Шаги для воспроизведения: Отправьте предупреждение пользователю в версии Discourse v3.5.0.beta9.

2 лайка

Та же проблема. Интересно, это ошибка или задумано так.

1 лайк

Мне кажется, это могло быть намеренным изменением — @hugh, наверное, знает.

1 лайк

Привет, народ!

Я расследовал, почему предупреждения в личных сообщениях (PM) теряют цветовое оформление для персонала после миграции потока постов на Glimmer, и хотел поделиться тем, что я нашел — похоже на небольшую оплошность, а не на преднамеренное изменение (по крайней мере, в части кода).

Проблема

В post.gjs (строка 436) CSS-класс модератора применяется на основе:

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

@post.isModeratorAction работает корректно — это валидный геттер в модели Post. Но @post.isWarning вообще не существует в модели Post.

Там не определено ни свойства isWarning, ни геттера, ни отслеживаемого поля. Поэтому условие (and @post.isWarning @post.firstPost) всегда оценивается как false, и класс moderator никогда не применяется к первому посту предупреждения в личных сообщениях.

Как это работало раньше

В старой системе виджетов transformPost (transform-post.js) явно отображал флаг уровня темы в атрибуты поста:

postAtts.isWarning = topic.is_warning;

Затем widgets/post.js проверял attrs.isWarning && attrs.firstPost, чтобы применить класс moderator. Этот мост был потерян во время миграции на Glimmer.

Мое мнение

Поскольку post.gjs активно ссылается на @post.isWarning, похоже, что намерение заключалось в сохранении этого поведения. Если удаление цветового оформления персонала из предупреждений было преднамеренным, то ветка (and @post.isWarning @post.firstPost) в post.gjs является мертвым кодом и может быть удалена. Если это баг (что кажется более вероятным, учитывая старый код виджетов), исправление будет небольшим геттером в модели Post:

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

Я хотел узнать мнение команды — это выглядит как оплошность при миграции на Glimmer или это было сделано намеренно? В любом случае, мертвая ссылка на @post.isWarning в post.gjs, возможно, заслуживает внимания.

Спасибо!

3 лайка

Интересно, как был написан этот код. Надеюсь, кто-нибудь из команды ответит на ваш вопрос там, чтобы прояснить, было ли это упущением или код был написан именно так по какой-то другой причине.

2 лайка

Отличный отчёт, спасибо, всё именно так, как вы описали. Я применяю исправление здесь:

2 лайка