Issue #319

Open
noosferogov/noosfero#319
Created by Larissa Reis (Edited )

Menção a usuários em comentários

Como usuário, eu posso fazer menção a outro usuário em um comentário ou mensagem de mural. Dessa forma esse usuário receberá uma atualização na sua aba de atividade de rede com o conteúdo ou mensagem de mural onde há a menção. A menção seguirá o padrão de outras redes sociais, ou seja, @identificador.

Importante: essa feature deve fazer uso da lib ActionTracker do Noosfero.

4 participants
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    Reassigned to @larissareis

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    Reassigned to @fabio1079

    Choose File ...   File name...
    Cancel
  • C8b72d0556872a2aea21e8fed0a72001?s=40&d=identicon
    Melissa Wen @melissawen

    em andamento

    Choose File ...   File name...
    Cancel
  • 8929f5e2c6b39a0a8afb4630b116faab?s=40&d=identicon
    Fabio Teixeira @fabio1079

    @larissareis, desculpe a demora, eu tive alguns problemas com essa issue: 1º foi em como fazer um ActionTracker onde não é um usuário notificando suas ações mas sim um comentário notificando pessoas marcadas, é um SQL bem confuso. 2º após fazer o novo job para notificar as pessoas marcadas, tive problemas em fazer a model comentário utilizar esse novo job. Atualmente estou trabalhando na model Scrap(mensagem de mural) ele é um pouco diferente de Comment e estou tendo que fazer algumas adaptações. Terminando Scrap é só fazer os testes.

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    @fabio1079 Fiz os comentários no código. Ontem eu testei a funcionalidade e observei algumas coisas:

    • Em comentários de atividades (criados na aba activities), não está aparecendo as sugestões de usuários para mencionar.
    • Às vezes também não está mostrando as sugestões de usuários quando eu estou escrevendo um scrap. Isso acontece com você também?
    • É possível pela lib mostrar o identifier ao lado do nome completo? Como aqui no gitlab quando eu marco alguém.
    • Seria legal se você criasse um link para o profile do usuário mencionado no comentário (igual no gitlab/twitter/facebook). É simples então não acho que vai atrasar.
    • Tem aquele bug que você já tinha mencionado: o usuário que marcou (seja em comentário ou em scrap) é que está recebendo a notificação. O problema deve ser na sql mesmo, estou investigando para ver o que é exatamente.
    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    @fabio1079

    Sobre o próprio usuário que fez a menção receber a notificação, não tem nada errado com a SQL ou a implementação. O comportamento está correto de acordo com o funcionamento do ActionTracker (embora não seja o desejável para a gente, vamos deixar assim para simplificar). O que acontece é o seguinte: as notificações são mostradas como:

    • ProfileActivity: são Scraps ou ActionTracker::Record e são aquelas mostradas na aba mural.
    • ActionTrackerNotification: são notificações geradas para os usuários interessados (nesse caso, o usuário marcado). Elas notificação uma "ação" (representada pelo ActionTracker::Record).

    O usuário que mencionou outro tem um ActionTracker::Record dessa ação, logo essa ação vai aparecer em seu mural (observe que ela não aparece na aba activities dele). Já o usuário que foi mencionado possui um ActionTracker::Record através do ActionTrackerNotification (que é criado corretamente por aquela SQL que vocês fizeram), logo a notificação vai aparecer na aba activity dele e não na aba mural. Isso é um problema também quando um usuário menciona alguém em um conteúdo de um outro usuário, o usuário dono do conteúdo vai ficar com essa notificação no mural.

    Para simplificar a solução, vamos apenas modificar a descrição da atividade quando ela estiver sendo mostrada no mural (wall) de quem fez a menção, em app/views/profile/_notify_mentioned_users.html.erb, se tab_action for 'wall'.

    Ainda temos alguns pequenos bugs também:

    • Nós não queremos permitir que as pessoas gerem notificação por auto-menção. Então não incluir o próprio usuário quando for listar os usuários mencionados no job que cria a ActionTrackerNotification, e se ele for o único usuário mencionado, então nem criar o ActionTracker::Record de menção.
    • Se for scrap, não colocar "ze mentioned you on ze" e sim algo como "ze mentioned you on ze's wall" (porque ele pode mencionar na wall de outra pessoa também; mas se for no mural de quem ele mencionou, então não cria a notificação).
    • Se eu menciono uma pessoa no começo da mensagem, ela não recebe a notificação por causa da regex. Tem que levar em conta esse caso em que não tem espaço antes da menção.
    • Se eu seguir ou for amigo de ze, e ze me mencionar, eu não preciso receber a notificação extra de "ze escreveu isso".

    @fabio1079 Podemos marcar uma pequena reunião o quanto antes para discutir o que dessas coisas nós vamos fazer e o que vamos deixar para depois? Já que estão tendo dificuldades vocês preferem mudar para uma outra issue e deixar esses ajustes do ActionTracker comigo?

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    Sobre os bugs: O primeiro e maior bug acredito que será resolvido com um novo parâmetro "show_on_wall" com valor false. Com esse parâmetro com false, uma action não irá aparecer no mural do dono da ação. Notificações de menção não serão mostradas no mural por padrão. Isso já foi implementado, mas ainda é preciso fazer uns testes.

    Sobre o restante dos bugs, respectivamente:

    • @fabio1079 está finalizando, juntamente com menção de membros de comunidade além de amigos;
    • Vamos alterar a mensagem, inclusive por causa do bug descrito abaixo dessa listagem.
    • Corrigimos a regex;
    • Criamos a solução e deixamos comentada. Quando fizermos rebase com a feature de seguidores, aplicamos a modificação.

    Bug adicional: Quando um comentário é criado em uma atividade do mural/rede (ou seja, em um action_tracker record), ele não tem url para criar a mensagem, e o comentário quebra. Temos que corrigir os parâmetros passados para o track_actions.

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    @marcosronaldo você mencionou o MR disso no irc mas não achei no gitlab

    Choose File ...   File name...
    Cancel