From b09ee9cb820a9a3dbb31aa7a87ac8f0ea98b25a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9gis=20Hanol?= Date: Tue, 8 Dec 2015 11:55:34 +0100 Subject: [PATCH] FIX: don't show members of a group in the user summary --- app/serializers/topic_view_serializer.rb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/serializers/topic_view_serializer.rb b/app/serializers/topic_view_serializer.rb index a109ff34a..a616c4a1b 100644 --- a/app/serializers/topic_view_serializer.rb +++ b/app/serializers/topic_view_serializer.rb @@ -66,14 +66,17 @@ class TopicViewSerializer < ApplicationSerializer } if object.topic.private_message? - result[:allowed_users] = object.topic.allowed_users.map do |user| - BasicUserSerializer.new(user, scope: scope, root: false) - end - end + allowed_user_ids = Set.new - if object.topic.private_message? - result[:allowed_groups] = object.topic.allowed_groups.map do |ag| - BasicGroupSerializer.new(ag, scope: scope, root: false) + result[:allowed_groups] = object.topic.allowed_groups.map do |group| + allowed_user_ids.merge(GroupUser.where(group: group).pluck(:user_id)) + BasicGroupSerializer.new(group, scope: scope, root: false) + end + + result[:allowed_users] = object.topic.allowed_users.select do |user| + !allowed_user_ids.include?(user.id) + end.map do |user| + BasicUserSerializer.new(user, scope: scope, root: false) end end @@ -83,7 +86,6 @@ class TopicViewSerializer < ApplicationSerializer end end - if object.suggested_topics.try(:topics).present? result[:suggested_topics] = object.suggested_topics.topics.map do |user| SuggestedTopicSerializer.new(user, scope: scope, root: false)