从对话中移除另一位用户会在列表中留下无法清除的通知

重现方法

  1. 创建一个临时用户。(别忘了你可以使用加号技巧。所以 username+whatever@gmail.com。)
  2. 向临时用户发送消息。(这将创建一个高优先级通知。)
  3. 从私人消息中删除临时用户。(希望你的拼写比我好。)
  4. 如果你是管理员,冒充临时用户并尝试清除通知。(哇哈哈!)

缓解措施

管理员可以删除消息,这将清除通知。诀窍是找到通知。我通过此查询进行管理:

-- [params]
-- int :user_id 

SELECT * 
from notifications 
where user_id = :user_id
      and high_priority
      and not read

我认为用户无法自行清除通知,因为即使他们有 URL 也无法访问私人消息。

可能的解决方案

当某人被从对话中移除时,也移除通知。

1 个赞

如果我移除某人,他们会收到通知,但如果我移除它,他们就不应该收到通知,对吗?

1 个赞

用户可以直接点击通知菜单上的“Dismiss”按钮吗?

5 个赞

哦,天哪。我甚至不知道那个按钮的存在。现在我知道它存在了,它确实清除了通知。

3 个赞

好的,我现在明白了你的意思。

2 个赞

就我而言,我认为如果收件人无法再查看消息,则应删除/清除通知。有一个后备(“关闭”按钮)是好的,但这仍然有点像在用户面前玩弄他们,让他们觉得通知一直存在。此外,该按钮会关闭所有内容,这可能不是用户想要的。(不过,公平地说,大多数人只有在以正常方式清除了所有其他通知后才会注意到这个问题。)

2 个赞

嗨 Jon,这确实是一个很容易解决的小麻烦,但我无法重现它:

当用户菜单中的通知出现时,只要我们点击 PM(它会导向一个“哎呀!该页面不存在或已设为私有”页面,因为该帐户无法访问它),它也会被移除。

我是否错过了你重现步骤中的任何内容?

2 个赞

我在我们的生产系统上与一名版主进行了测试,发现“哎呀!该页面不存在或已设为私密。”页面并没有清除通知。但我们的生产系统仍是 2.9.0.beta14 版本。刚才在我自己的 Discourse 服务器上进行测试时,该服务器是 3.1.0.beta2 版本,当收件人尝试访问该 URL 时,通知确实消失了。所以也许问题的这部分已经修复了?

但是,我没有看到收件人如何在被从私信线程中移除后查看该消息。我可以带外传递 URL 给收件人,但这在实际情况中不太可能发生。相反,收件人会收到一个通知,但无法知道 URL,甚至不知道是谁发起的。这是从一个新账户截取的,该账户已收到无法访问的私信通知:

这在 3.1.0.beta2 版本上。如果你在另一个窗口打开临时用户的视图,可以看到添加了通知。但当用户被移除后,没有可选的项目了。

PM

我在视频或 Dummy 用户的视图截图中都没有看到“A test pm”。我发现使用一个全新的 dummy 用户进行调试要简单得多。

2 个赞

您正在使用旧版通知菜单,该菜单也与头像菜单上的通知相关联。

我可以重现您在使用旧版通知菜单时遇到的问题。

通知确实经过了重新设计,旧版通知菜单将在未来不受支持并被移除。

我建议您将导航菜单设置更改为“侧边栏”或“标题下拉菜单”:slight_smile:

2 个赞

昨天我报告了同样的问题(当时没找到这个帖子)。它似乎依赖于旧版菜单导航,并且在 2.8 的最新版本中就已经存在了。

“全部清除”按钮的解决方法似乎在只剩下最后一个通知时不起作用,因为在这种情况下该按钮会被禁用。也许当有更多通知时它会起作用——但那样的话,用户可能会清除掉一些重要的内容。

目前,用户会感到困惑和/或沮丧。少数抱怨的用户可能会被告知使用该按钮,但这只在某些情况下有效。这是否应该移至 Bug

1 个赞

Bug 中开启了一个关于类似行为的新主题,其中包含更详细的关于此行为的说明:

因此,我将关闭此主题,并标记为已解决,以支持另一个主题。这是一个小问题,但将其归类在 Bug 中更合适,尤其是因为它已被多次报告。

3 个赞