about summary refs log tree commit diff
path: root/app/lib/activitypub/activity/announce.rb
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2019-01-19 18:28:37 +0100
committerThibaut Girka <thib@sitedethib.com>2019-01-19 18:28:37 +0100
commit5e0cf92fd145b27053389e5ffcce48da77439713 (patch)
tree27e1567b240f1a3117de595413ccceb9222d8465 /app/lib/activitypub/activity/announce.rb
parent530d29148ca0c5bf29f6fa516b1ef4f91d95894b (diff)
parent7c3fddeab4c4ddebca7d5441ac67870aa1cecfe4 (diff)
Merge branch 'master' into glitch-soc/merge-upstream
No conflicts.
Diffstat (limited to 'app/lib/activitypub/activity/announce.rb')
-rw-r--r--app/lib/activitypub/activity/announce.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb
index 1147a4481..34d1b7cbd 100644
--- a/app/lib/activitypub/activity/announce.rb
+++ b/app/lib/activitypub/activity/announce.rb
@@ -17,7 +17,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
       uri: @json['id'],
       created_at: @json['published'],
       override_timestamps: @options[:override_timestamps],
-      visibility: original_status.visibility
+      visibility: visibility_from_audience
     )
 
     distribute(status)
@@ -26,6 +26,18 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
 
   private
 
+  def visibility_from_audience
+    if equals_or_includes?(@json['to'], ActivityPub::TagManager::COLLECTIONS[:public])
+      :public
+    elsif equals_or_includes?(@json['cc'], ActivityPub::TagManager::COLLECTIONS[:public])
+      :unlisted
+    elsif equals_or_includes?(@json['to'], @account.followers_url)
+      :private
+    else
+      :direct
+    end
+  end
+
   def announceable?(status)
     status.account_id == @account.id || status.public_visibility? || status.unlisted_visibility?
   end