Remover outro usuário de uma conversa cria uma notificação não cancelável

Como reproduzir

  1. Crie um usuário temporário. (Não se esqueça que você pode usar o truque do mais. Então username+whatever@gmail.com.)
  2. Envie uma mensagem para o usuário temporário. (Isso criará uma notificação de alta prioridade.)
  3. Remova o usuário temporário da mensagem pessoal. (Espero que sua ortografia seja melhor que a minha.)
  4. Se você for um administrador, finja ser o usuário temporário e tente limpar a notificação. (Whah ha ha!)

Mitigação

Um administrador pode excluir a mensagem, o que limpará a notificação. O truque é encontrar a notificação. Eu a gerencio usando esta consulta:

-- [params]
-- int :user_id 

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

Não acho que o usuário possa limpar a notificação por conta própria, pois ele não pode visitar a MP mesmo que tenha o URL.

Solução possível

Quando alguém for removido de uma conversa, também remova a notificação.

1 curtida

Então, se eu removesse alguém, ela receberia uma notificação, mas se eu removesse isso, ela não deveria recebê-la?

1 curtida

O usuário pode simplesmente clicar no botão Dispensar no menu de notificações?

5 curtidas

Ah, que bom. Eu nem sabia que esse botão existia. Ele limpa a notificação agora que sei que ele existe.

3 curtidas

Ah, ok, agora entendi o que você está dizendo.

2 curtidas

Para que valha, ainda acho que a notificação deve ser excluída/limpa se o destinatário não puder mais ver a mensagem. Ter um recurso de segurança (o botão “Dispensar”) é bom, mas ainda é um pouco como fazer o usuário de bobo, pois a notificação permanece. Além disso, o botão dispensa tudo, o que pode não ser o que o usuário deseja. (Embora, para ser justo, a maioria das pessoas só notará o problema se tiver limpado todas as outras notificações da maneira normal.)

2 curtidas

Olá Jon, é realmente um pequeno inconveniente que podemos resolver muito facilmente, mas não consegui reproduzir:

A notificação dentro do menu do usuário também é removida assim que clicamos no PM (o que leva a uma página "Oops! Essa página não existe ou é privada.", já que a conta não tem acesso a ela).

Perdi alguma coisa nas suas etapas de reprodução?

2 curtidas

Testei com um moderador em nosso sistema de produção e a página “Oops! Essa página não existe ou é privada.” não limpou a notificação. Mas nosso sistema de produção ainda está na versão 2.9.0.beta14. Agora, quando fiz esse teste em meu próprio servidor Discourse, que é a versão 3.1.0.beta2, a notificação desaparece quando o destinatário tenta acessar o URL. Então, talvez essa parte do problema já tenha sido corrigida?

No entanto, não vejo nenhuma maneira para o destinatário ver a mensagem depois que ele foi removido do tópico do MP. Eu poderia passar o URL para o destinatário fora de banda, mas isso não é provável que aconteça em uma situação real. Em vez disso, o destinatário terá uma notificação sem nenhuma maneira de saber o URL ou até mesmo quem a iniciou. Aqui está uma captura de tela de uma conta totalmente nova que foi notificada de um MP ao qual não tem acesso:

Isso está na versão 3.1.0.beta2. Você pode ver a notificação adicionada se tiver outra janela aberta na visualização do usuário temporário. Mas não há nenhum item para selecionar depois que o usuário foi removido.

PM

Não vejo “Um MP de teste” nem no vídeo nem na captura de tela da visualização do usuário Dummy. Achei muito mais simples depurar com um usuário dummy completamente novo.

2 curtidas

Você está usando o menu de notificação Legado, que também está vinculado às notificações no menu do avatar.

Consigo reproduzir o seu problema com o menu de notificação Legado.

As notificações foram de fato reformuladas e o menu de notificação Legado não será mais suportado e será removido no futuro.

Sugiro que você defina a configuração do menu de navegação como “Barra lateral” ou “Menu suspenso do cabeçalho” :slight_smile:

2 curtidas

Ontem relatei este mesmo bug (não encontrei este tópico). Parece depender da navegação do menu Legado, e já estava presente nas últimas versões do 2.8.

A solução alternativa do botão Dismiss All não parece funcionar se essa for a única notificação restante, pois o botão fica desativado nesse caso. Talvez funcione se houver mais notificações — mas então a pessoa pode estar dispensando coisas que podem ser relevantes.

Como está, os usuários ficarão confusos e/ou frustrados. Os poucos que reclamarem podem ser instruídos a usar o botão, mas isso só funcionará em alguns casos. Isso não deveria ser movido para Bug talvez?

1 curtida

Um novo tópico sobre comportamento semelhante foi aberto em Bug com instruções mais detalhadas sobre esse comportamento:

Portanto, fecharei este marcado como resolvido em favor do outro. É um problema menor, mas tê-lo em Bug parece mais apropriado, especialmente porque foi relatado várias vezes.

3 curtidas