Discard misattributed remote statuses, improve timelines filter

This commit is contained in:
Eugen Rochko
2016-11-10 00:15:49 +01:00
parent 17903c6dae
commit aabf884c5f
3 changed files with 15 additions and 4 deletions

View File

@ -121,6 +121,7 @@ class Status < ApplicationRecord
def filter_timeline(query, account)
blocked = Block.where(account: account).pluck(:target_account_id)
return query if blocked.empty?
query
.joins('LEFT OUTER JOIN statuses AS parents ON statuses.in_reply_to_id = parents.id')

View File

@ -48,6 +48,8 @@ class ProcessFeedService < BaseService
if original_status.nil?
status.destroy
return nil
elsif original_status.reblog?
status.reblog = original_status.reblog
end
end
@ -73,10 +75,17 @@ class ProcessFeedService < BaseService
status = find_status(id(entry))
return status unless status.nil?
begin
account = account?(entry) ? find_or_resolve_account(acct(entry)) : @account
rescue Goldfinger::Error
return nil
# If status embeds an author, find that author
# If that author cannot be found, don't record the status (do not misattribute)
if account?(entry)
begin
account = find_or_resolve_account(acct(entry))
return nil if account.nil?
rescue Goldfinger::Error
return nil
end
else
account = @account
end
status = Status.create!({