diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-08-30 15:37:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-30 15:37:02 +0200 |
commit | 7b8f26284072120701289f90bc6602ce918e4304 (patch) | |
tree | fb3fa887fcbde89b9f3a6fe200b2fbc9546719cc /app/lib/activitypub/activity/create.rb | |
parent | 3f51a22d3b6fb1550b373cfd17b1125cc4747c52 (diff) |
Forward ActivityPub creates that reply to local statuses (#4709)
* Forward ActivityPub creates that reply to local statuses * Fix test * Fix wrong signers
Diffstat (limited to 'app/lib/activitypub/activity/create.rb')
-rw-r--r-- | app/lib/activitypub/activity/create.rb | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index 114aed84f..2eea1827a 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -17,6 +17,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity resolve_thread(status) distribute(status) + forward_for_reply if status.public_visibility? || status.unlisted_visibility? status end @@ -162,4 +163,13 @@ class ActivityPub::Activity::Create < ActivityPub::Activity return @skip_download if defined?(@skip_download) @skip_download ||= DomainBlock.find_by(domain: @account.domain)&.reject_media? end + + def reply_to_local? + !replied_to_status.nil? && replied_to_status.account.local? + end + + def forward_for_reply + return unless @json['signature'].present? && reply_to_local? + ActivityPub::RawDistributionWorker.perform_async(Oj.dump(@json), replied_to_status.account_id) + end end |