Editar posts causa notificação

Eu não quero tornar nada muito complexo.

Estava examinando parte do código disso (obrigado @tshenry pelo link), e não parece que precise ser tão complicado.

As menções a grupos estão sendo acionadas aqui (linhas 78-80). A função expand_group_mentions() é um gerador responsável por gerar os usuários que devem receber notificações de menção a grupos (respeitando políticas como SiteSetting.max_users_notified_per_group_mention).

Isso parece ser o local natural para colocar essa lógica.

Na função create_notification, suprimimos notificações para qualquer pessoa que já tenha recebido uma notificação do mesmo tipo. É por isso que editar uma postagem com uma menção a grupo aciona uma notificação para novos membros do grupo — uma notificação é realmente gerada para todos os usuários do grupo, mas é então suprimida para pessoas que já receberam a notificação.

Estou sugerindo algo semelhante, atualizando a função expand_group_mentions() para também filtrar grupos que já possuem um registro na tabela group_mentions.

Algo assim (por favor, desculpe minha falta de conhecimento sobre a sintaxe do Ruby)

  def expand_group_mentions(groups, post)
    return unless post.user && groups

    Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
      next if group.user_count >= SiteSetting.max_users_notified_per_group_mention

      # Adicionar verificação para grupos já mencionados
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

Isso não resolve o aviso JIT, porém.

Tentando ajudar a resolver isso, me avise se eu estiver apenas sendo chato… :slight_smile: