FIX: Show quote replies when filtering (#11483)

Only applies when using the `enable_filtered_replies_view` site setting.

The filter query was not accounting for quote replies.
This commit is contained in:
Penar Musaraj 2020-12-14 15:24:36 -05:00 committed by GitHub
parent 0e210df79a
commit d06ac6c353
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 2 deletions

View File

@ -773,10 +773,12 @@ class TopicView
# Filter replies # Filter replies
if @replies_to_post_number.present? if @replies_to_post_number.present?
post_id = filtered_post_id(@replies_to_post_number.to_i)
@filtered_posts = @filtered_posts.where(' @filtered_posts = @filtered_posts.where('
posts.post_number = 1 posts.post_number = 1
OR posts.post_number = :post_number OR posts.post_number = :post_number
OR posts.reply_to_post_number = :post_number', { post_number: @replies_to_post_number.to_i }) OR posts.reply_to_post_number = :post_number
OR posts.id IN (SELECT pr.reply_post_id FROM post_replies pr WHERE pr.post_id = :post_id)', { post_number: @replies_to_post_number.to_i, post_id: post_id })
@contains_gaps = true @contains_gaps = true
end end

View File

@ -2127,6 +2127,8 @@ RSpec.describe TopicsController do
let!(:post3) { Fabricate(:post, topic: topic, reply_to_post_number: post2.post_number) } let!(:post3) { Fabricate(:post, topic: topic, reply_to_post_number: post2.post_number) }
let!(:post4) { Fabricate(:post, topic: topic, reply_to_post_number: post2.post_number) } let!(:post4) { Fabricate(:post, topic: topic, reply_to_post_number: post2.post_number) }
let!(:post5) { Fabricate(:post, topic: topic) } let!(:post5) { Fabricate(:post, topic: topic) }
let!(:quote_reply) { Fabricate(:basic_reply, user: user, topic: topic) }
let!(:post_reply) { PostReply.create(post_id: post2.id, reply_post_id: quote_reply.id) }
it 'should return the right posts' do it 'should return the right posts' do
get "/t/#{topic.id}.json", params: { get "/t/#{topic.id}.json", params: {
@ -2141,7 +2143,7 @@ RSpec.describe TopicsController do
expect(body.has_key?("related_messages")).to eq(false) expect(body.has_key?("related_messages")).to eq(false)
ids = body["post_stream"]["posts"].map { |p| p["id"] } ids = body["post_stream"]["posts"].map { |p| p["id"] }
expect(ids).to eq([post.id, post2.id, post3.id, post4.id]) expect(ids).to eq([post.id, post2.id, post3.id, post4.id, quote_reply.id])
end end
end end