From cf3ec71aa564c7fe47ec79f8dd5f14e3bce0b85c Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Mon, 15 Jul 2019 13:34:05 -0500 Subject: local visibility scope, chat scope+tags, unlisted tags --- app/services/fan_out_on_write_service.rb | 37 +++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) (limited to 'app/services/fan_out_on_write_service.rb') diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb index 4db3d4cf4..f726dba18 100644 --- a/app/services/fan_out_on_write_service.rb +++ b/app/services/fan_out_on_write_service.rb @@ -6,7 +6,7 @@ class FanOutOnWriteService < BaseService def call(status) raise Mastodon::RaceConditionError if status.visibility.nil? - deliver_to_self(status) if status.account.local? + deliver_to_self(status) if status.account.local? && !status.chat_visibility? render_anonymous_payload(status) @@ -16,28 +16,35 @@ class FanOutOnWriteService < BaseService deliver_to_own_conversation(status) elsif status.limited_visibility? deliver_to_mentioned_followers(status) + elsif status.chat_visibility? + deliver_to_mentioned_followers(status) + deliver_to_hashtags(status) + elsif status.local_visibility? + deliver_to_followers(status) + deliver_to_lists(status) + deliver_to_local(status) unless filtered?(status) else deliver_to_followers(status) deliver_to_lists(status) - end - return if status.reblog? && !Setting.show_reblogs_in_public_timelines - return if filtered?(status) + return if status.reblog? && !Setting.show_reblogs_in_public_timelines + return if filtered?(status) || (status.reblog? && filtered?(status.reblog)) - if !status.reblog? && status.distributable? - deliver_to_hashtags(status) - deliver_to_public(status) if status.curated - end + if !status.reblog? && status.distributable? + deliver_to_hashtags(status) + deliver_to_public(status) if status.curated + end - if status.relayed? - status = Status.find(status.reblog_of_id) - return if filtered?(status) - render_anonymous_payload(status) - end + if status.relayed? + status = Status.find(status.reblog_of_id) + return if filtered?(status) + render_anonymous_payload(status) + end - return unless status.network? && status.public_visibility? && !status.reblog + return unless status.network? && status.public_visibility? && !status.reblog - deliver_to_local(status) + deliver_to_local(status) + end end private -- cgit