diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-02-17 11:58:17 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-02-17 12:26:55 +0100 |
commit | 369a475a7001677493b452b9aaea1141de442c53 (patch) | |
tree | a0c81f0876c68827cfa0e856844054e53cb2e741 /app/lib/activitypub/activity/announce.rb | |
parent | ab9082b3325dfd193d7130d6c880e85ab2781bc0 (diff) | |
parent | 147b4c2c3afacd6ad9d5c1353c072861eaca5fd2 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/serializers/rest/instance_serializer.rb - app/views/layouts/error.html.haml - public/oops.png Took our version (same as upstream but without the things that only make sense in an animation). Additional changes: - app/javascript/flavours/vanilla/theme.yml Include upstream's javascript in error pages.
Diffstat (limited to 'app/lib/activitypub/activity/announce.rb')
-rw-r--r-- | app/lib/activitypub/activity/announce.rb | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb index 04afeea20..9f8ffd9fb 100644 --- a/app/lib/activitypub/activity/announce.rb +++ b/app/lib/activitypub/activity/announce.rb @@ -2,8 +2,11 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity def perform + return reject_payload! if delete_arrived_first?(@json['id']) || !related_to_local_activity? + original_status = status_from_object - return if original_status.nil? || delete_arrived_first?(@json['id']) || !announceable?(original_status) + + return reject_payload! if original_status.nil? || !announceable?(original_status) status = Status.find_by(account: @account, reblog: original_status) @@ -39,4 +42,12 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity def announceable?(status) status.account_id == @account.id || status.public_visibility? || status.unlisted_visibility? end + + def related_to_local_activity? + followed_by_local_accounts? || requested_through_relay? || reblog_of_local_status? + end + + def reblog_of_local_status? + status_from_uri(object_uri)&.account&.local? + end end |