diff options
Diffstat (limited to 'app/lib/activitypub/activity.rb')
-rw-r--r-- | app/lib/activitypub/activity.rb | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb index 27918883f..e4de18fce 100644 --- a/app/lib/activitypub/activity.rb +++ b/app/lib/activitypub/activity.rb @@ -137,11 +137,12 @@ class ActivityPub::Activity redis.setex("delete_upon_arrival:#{@account.id}:#{uri}", 6.hours.seconds, uri) end - def status_from_object(announced_by: nil) + def status_from_object(announced_by: nil, local_only: false, existing_only: false) # If the status is already known, return it status = status_from_uri(object_uri) - return status unless status.nil? + return status unless status.nil? || (local_only && !status.local?) + return if existing_only || local_only # If the boosted toot is embedded and it is a self-boost, handle it like a Create unless unsupported_object_type? @@ -188,6 +189,11 @@ class ActivityPub::Activity DomainBlock.where(domain: account.domain, reject_unknown: true).exists? end + def manual_only?(account = nil) + account = @account if account.nil? + DomainBlock.where(domain: account.domain, manual_only: true).exists? + end + def known?(account = nil) account = @account if account.nil? return true if account.known? @@ -195,6 +201,11 @@ class ActivityPub::Activity !account.service? && account.passive_relationships.exists? end + def manual_only?(account = nil) + account = @account if account.nil? + account.manual_only? + end + def reject_payload! Rails.logger.info("Rejected #{@json['type']} activity #{@json['id']} from #{@account.uri}#{@options[:relayed_through_account] && "via #{@options[:relayed_through_account].uri}"}") nil |