about summary refs log tree commit diff
path: root/app/services/post_status_service.rb
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-05-06 08:36:44 -0500
committermultiple creatures <dev@multiple-creature.party>2019-05-21 03:16:22 -0500
commit59fd9c25dcd98d81ed15cb5bc7dc0ac40ba0c630 (patch)
treec23674d9f3a40d3e6bf9c82a8f2c25fb2616f079 /app/services/post_status_service.rb
parentfeea4f6dc0a093f59385492611bf385c8bc543fd (diff)
Replies should not exceed the visibility being replied to.
Diffstat (limited to 'app/services/post_status_service.rb')
-rw-r--r--app/services/post_status_service.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 9ac38ca4a..5b2b630d1 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -52,8 +52,15 @@ class PostStatusService < BaseService
      @text = '.'
      @text = @media.find(&:video?) ? '📹' : '🖼' if @media.size > 0
     end
+
     @visibility   = @options[:visibility] || @account.user&.setting_default_privacy
     @visibility   = :unlisted if @visibility == :public && @account.silenced?
+
+    if @in_reply_to.present?
+      v = %w(public unlisted private direct limited)
+      @visibility = @in_reply_to.visibility if v.index(@visibility) < v.index(@in_reply_to.visibility)
+    end
+
     @scheduled_at = @options[:scheduled_at]&.to_datetime
     @scheduled_at = nil if scheduled_in_the_past?
   rescue ArgumentError