Если вы администратор, войдите в систему от имени временного пользователя и попробуйте удалить уведомление. (Ха-ха-ха!)
Временное решение
Администратор может удалить сообщение, что приведёт к удалению уведомления. Сложность заключается в поиске уведомления. Я управляю этим с помощью следующего запроса:
-- [params]
-- int :user_id
SELECT *
from notifications
where user_id = :user_id
and high_priority
and not read
Я не думаю, что пользователь сможет удалить уведомление самостоятельно, так как он не сможет открыть личное сообщение, даже если у него есть ссылка.
Возможное решение
Когда кого-то удаляют из диалога, также удаляйте уведомление.
На всякий случай, я всё ещё считаю, что уведомление должно удаляться/очищаться, если получатель больше не может просматривать сообщение. Наличие запасного варианта (кнопка «Отклонить») — это хорошо, но всё же это немного похоже на газлайтинг пользователя, когда уведомление остаётся. Кроме того, кнопка закрывает всё, что может быть не тем, что хочет пользователь. (Хотя, справедливости ради, большинство людей заметят проблему только если они очистили все свои остальные уведомления обычным способом.)
Привет, Джон, это, безусловно, небольшая досада, от которой можно легко избавиться, но мне не удалось воспроизвести проблему:
Уведомление внутри меню пользователя также исчезает сразу после клика по ЛС (что приводит к странице «Ой! Страница не найдена или является приватной», так как у аккаунта нет доступа к ней).
Я тестировал это с модератором на нашей производственной системе, и страница «Ой! Эта страница не существует или является приватной» не очищала уведомление. Но наша производственная система всё ещё находится на версии 2.9.0.beta14. Только что, когда я провёл этот тест на своём собственном сервере Discourse версии 3.1.0.beta2, уведомление действительно исчезало, когда получатель переходил по ссылке. Возможно, эта часть проблемы уже исправлена?
Однако я не вижу способа, чтобы получатель мог увидеть сообщение после того, как его удалили из темы личного сообщения. Я мог бы передать ссылку получателю вне системы, но в реальной ситуации это маловероятно. Вместо этого у получателя останется уведомление без возможности узнать ссылку или даже того, кто его инициировал. Вот скриншот с совершенно нового аккаунта, который получил уведомление о личном сообщении, к которому у него нет доступа:
Это на версии 3.1.0.beta2. Вы можете увидеть добавленное уведомление, если у вас открыто другое окно с видом временного пользователя. Но после удаления пользователя нет элемента для выбора.
Я не вижу «A test pm» ни в видео, ни на скриншоте вида пользователя Dummy. Мне показалось гораздо проще отлаживать с совершенно новым тестовым пользователем.
Вчера я уже сообщал об этой той же ошибке (не нашёл эту тему). Похоже, проблема зависит от навигации в устаревшем меню и присутствовала даже в последних версиях 2.8.
Обходной путь с кнопкой «Отклонить все» не работает, если это единственное оставшееся уведомление, так как в этом случае кнопка отключена. Возможно, она работает, если уведомлений больше, но тогда пользователь может отклонять важные сообщения.
В текущем виде пользователи просто будут путаться и/или расстраиваться. Тех немногих, кто пожалуется, могут попросить использовать кнопку, но это сработает только в некоторых случаях. Не стоит ли переместить это обсуждение в bug?
В канале bug была открыта новая тема о схожем поведении с более подробными инструкциями по этому вопросу:
Поэтому я закрою эту тему с пометкой «решено» в пользу той. Это незначительная проблема, но размещение её в bug кажется более уместным, особенно учитывая, что о ней сообщали неоднократно.