From 63046c8cb9df8e797d53566f2050313d757b089b Mon Sep 17 00:00:00 2001 From: Fire Demon Date: Sat, 26 Sep 2020 23:55:21 -0500 Subject: Limit visibility of replies to silenced and suspended accounts to "unlisted" and "limited", respectively --- app/lib/activitypub/activity/create.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'app/lib') diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb index c74ca1d58..f6d81af99 100644 --- a/app/lib/activitypub/activity/create.rb +++ b/app/lib/activitypub/activity/create.rb @@ -193,6 +193,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity end def process_audience + @params[:visibility] = :unlisted if @account.silenced? && @params[:visibility] == :public + (audience_to + audience_cc).uniq.each do |audience| next if audience == ActivityPub::TagManager::COLLECTIONS[:public] @@ -204,11 +206,12 @@ class ActivityPub::Activity::Create < ActivityPub::Activity next if account.nil? || @mentions.any? { |mention| mention.account_id == account.id } @mentions << Mention.new(account: account, silent: true) + @params[:visibility] = :unlisted if account.silenced? && @params[:visibility] == :public # If there is at least one silent mention, then the status can be considered # as a limited-audience status, and not strictly a direct message, but only # if we considered a direct message in the first place - next unless @params[:visibility] == :direct && direct_message.nil? + next unless account.suspended? || (@params[:visibility] == :direct && direct_message.nil?) @params[:visibility] = :limited end -- cgit