diff --git a/plugin.rb b/plugin.rb index 5a8bdf2..0bda268 100644 --- a/plugin.rb +++ b/plugin.rb @@ -116,9 +116,14 @@ after_initialize do add_to_class(:topic_query, :list_private_messages_assigned) do |user| list = private_messages_for(user, :all) user_id = user.id.to_s + group_ids = user.groups.pluck(:id) list = list - .joins("LEFT JOIN group_archived_messages gm ON gm.topic_id = topics.id") + .joins(" + LEFT JOIN group_archived_messages gm + ON gm.topic_id = topics.id + AND gm.group_id IN (#{group_ids.join(',')}) + ") .joins(" LEFT JOIN user_archived_messages um ON um.topic_id = topics.id AND um.user_id = #{user_id} ") diff --git a/spec/components/topic_query_spec.rb b/spec/components/topic_query_spec.rb index 9728e8c..596232a 100644 --- a/spec/components/topic_query_spec.rb +++ b/spec/components/topic_query_spec.rb @@ -29,12 +29,14 @@ describe TopicQuery do end let(:group) { Fabricate(:group).add(user) } + let(:group2) { Fabricate(:group) } let(:group_assigned_topic) do topic = Fabricate(:private_message_topic, topic_allowed_users: [], topic_allowed_groups: [ - Fabricate.build(:topic_allowed_group, group: group) + Fabricate.build(:topic_allowed_group, group: group), + Fabricate.build(:topic_allowed_group, group: group2) ], posts: [Fabricate(:post)] ) @@ -76,6 +78,16 @@ describe TopicQuery do TopicQuery.new(user, options).list_private_messages_assigned(user).topics ).to contain_exactly(assigned_topic) + GroupArchivedMessage.archive!(group2.id, group_assigned_topic.id) + + expect( + TopicQuery.new(user).list_private_messages_assigned(user).topics + ).to contain_exactly(group_assigned_topic) + + expect( + TopicQuery.new(user, options).list_private_messages_assigned(user).topics + ).to contain_exactly(assigned_topic) + GroupArchivedMessage.archive!(group.id, group_assigned_topic.id) expect(