Commit aabf884c authored by Eugen Rochko's avatar Eugen Rochko

Discard misattributed remote statuses, improve timelines filter

parent 17903c6d
...@@ -121,6 +121,7 @@ class Status < ApplicationRecord ...@@ -121,6 +121,7 @@ class Status < ApplicationRecord
def filter_timeline(query, account) def filter_timeline(query, account)
blocked = Block.where(account: account).pluck(:target_account_id) blocked = Block.where(account: account).pluck(:target_account_id)
return query if blocked.empty?
query query
.joins('LEFT OUTER JOIN statuses AS parents ON statuses.in_reply_to_id = parents.id') .joins('LEFT OUTER JOIN statuses AS parents ON statuses.in_reply_to_id = parents.id')
......
...@@ -48,6 +48,8 @@ class ProcessFeedService < BaseService ...@@ -48,6 +48,8 @@ class ProcessFeedService < BaseService
if original_status.nil? if original_status.nil?
status.destroy status.destroy
return nil return nil
elsif original_status.reblog?
status.reblog = original_status.reblog
end end
end end
...@@ -73,10 +75,17 @@ class ProcessFeedService < BaseService ...@@ -73,10 +75,17 @@ class ProcessFeedService < BaseService
status = find_status(id(entry)) status = find_status(id(entry))
return status unless status.nil? return status unless status.nil?
begin # If status embeds an author, find that author
account = account?(entry) ? find_or_resolve_account(acct(entry)) : @account # If that author cannot be found, don't record the status (do not misattribute)
rescue Goldfinger::Error if account?(entry)
return nil begin
account = find_or_resolve_account(acct(entry))
return nil if account.nil?
rescue Goldfinger::Error
return nil
end
else
account = @account
end end
status = Status.create!({ status = Status.create!({
......
...@@ -15,6 +15,7 @@ Sidekiq::Testing.inline! ...@@ -15,6 +15,7 @@ Sidekiq::Testing.inline!
RSpec.configure do |config| RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures" config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true config.use_transactional_fixtures = true
config.order = 'random'
config.infer_spec_type_from_file_location! config.infer_spec_type_from_file_location!
config.filter_rails_from_backtrace! config.filter_rails_from_backtrace!
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment