FIX: Display group archive topics for groups that the user is in.

This commit is contained in:
Guo Xiang Tan 2017-12-01 12:21:25 +08:00
parent b92988a586
commit 733503e67f
2 changed files with 19 additions and 2 deletions

View File

@ -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}
")

View File

@ -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(