Remove: 現在使われていないドメインブロック無視設定のデッドコード (#476)

* Remove: 現在使われていないドメインブロック無視設定のデッドコード

* Refactoring

* Fix test
This commit is contained in:
KMY(雪あすか) 2024-01-19 08:39:58 +09:00 committed by GitHub
parent 46161e5348
commit 989efcd78e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 36 additions and 33 deletions

View file

@ -83,9 +83,7 @@ class StatusesController < ApplicationController
info = InstanceInfo.find_by(domain: signed_request_account.domain)
return false if info.nil?
@misskey_software = %w(misskey calckey cherrypick sharkey).include?(info.software) &&
((@status.public_unlisted_visibility? && @status.account.user&.setting_reject_public_unlisted_subscription) ||
(@status.unlisted_visibility? && @status.account.user&.setting_reject_unlisted_subscription))
@misskey_software = %w(misskey calckey cherrypick sharkey).include?(info.software) && @status.sending_maybe_compromised_privacy?
end
def status_activity_serializer

View file

@ -153,7 +153,7 @@ class ActivityPub::TagManager
end
def cc_for_misskey(status)
if (status.account.user&.setting_reject_unlisted_subscription && status.unlisted_visibility?) || (status.account.user&.setting_reject_public_unlisted_subscription && status.public_unlisted_visibility?)
if status.sending_maybe_compromised_privacy?
cc = cc_private_visibility(status)
cc << uri_for(status.reblog.account) if status.reblog?
return cc

View file

@ -192,19 +192,15 @@ class StatusReachFinder
end
def banned_domains_of_status(status)
if status.account.user&.setting_send_without_domain_blocks
[]
else
blocks = DomainBlock.where(domain: nil)
blocks = blocks.or(DomainBlock.where(reject_send_sensitive: true)) if (status.with_media? && status.sensitive) || status.spoiler_text?
blocks.pluck(:domain).uniq
end
blocks = DomainBlock.where(domain: nil)
blocks = blocks.or(DomainBlock.where(reject_send_sensitive: true)) if (status.with_media? && status.sensitive) || status.spoiler_text?
blocks.pluck(:domain).uniq
end
def banned_domains_for_misskey
return @banned_domains_for_misskey if defined?(@banned_domains_for_misskey)
return @banned_domains_for_misskey = [] if (!@status.account.user&.setting_reject_public_unlisted_subscription && !@status.account.user&.setting_reject_unlisted_subscription) || (!@status.public_unlisted_visibility? && !@status.unlisted_visibility?)
return @banned_domains_for_misskey = [] unless @status.sending_maybe_compromised_privacy? || (@status.reblog? && @status.reblog.sending_maybe_compromised_privacy?)
domains = banned_domains_for_misskey_of_status(@status)
domains += banned_domains_for_misskey_of_status(@status.reblog) if @status.reblog? && @status.reblog.local?
@ -213,7 +209,6 @@ class StatusReachFinder
def banned_domains_for_misskey_of_status(status)
return [] if status.public_searchability?
return [] unless (status.public_unlisted_visibility? && status.account.user&.setting_reject_public_unlisted_subscription) || (status.unlisted_visibility? && status.account.user&.setting_reject_unlisted_subscription)
from_info = InstanceInfo.where(software: %w(misskey calckey cherrypick sharkey)).pluck(:domain)
from_domain_block = DomainBlock.where(detect_invalid_subscription: true).pluck(:domain)

View file

@ -0,0 +1,18 @@
# frozen_string_literal: true
module Status::DomainBlockConcern
extend ActiveSupport::Concern
def sending_sensitive?
return false unless local?
(with_media? && sensitive) || spoiler_text?
end
def sending_maybe_compromised_privacy?
return false unless local?
(public_unlisted_visibility? && !public_searchability? && account.user&.setting_reject_public_unlisted_subscription) ||
(unlisted_visibility? && !public_searchability? && account.user&.setting_reject_unlisted_subscription)
end
end

View file

@ -71,10 +71,6 @@ module User::HasSettings
settings['reject_unlisted_subscription']
end
def setting_send_without_domain_blocks
settings['send_without_domain_blocks']
end
def setting_stop_emoji_reaction_streaming
settings['stop_emoji_reaction_streaming']
end

View file

@ -40,6 +40,7 @@ class Status < ApplicationRecord
include Discard::Model
include Paginable
include RateLimitable
include Status::DomainBlockConcern
include Status::SafeReblogInsert
include Status::SearchConcern
include Status::SnapshotConcern

View file

@ -31,7 +31,6 @@ class UserSettings
setting :public_post_to_unlisted, default: false
setting :reject_public_unlisted_subscription, default: false
setting :reject_unlisted_subscription, default: false
setting :send_without_domain_blocks, default: false
setting :reaction_deck, default: nil
setting :stop_emoji_reaction_streaming, default: false
setting :emoji_reaction_streaming_notify_impl2, default: false

View file

@ -143,14 +143,8 @@ class StatusPolicy < ApplicationPolicy
def server_blocking_domain_of_status?(status)
@domain_block ||= DomainBlock.find_by(domain: current_account&.domain)
if @domain_block
if status.account.user&.setting_send_without_domain_blocks
(@domain_block.detect_invalid_subscription && status.public_unlisted_visibility? && status.account.user&.setting_reject_public_unlisted_subscription) ||
(@domain_block.detect_invalid_subscription && status.public_visibility? && status.account.user&.setting_reject_unlisted_subscription)
else
(@domain_block.detect_invalid_subscription && status.public_unlisted_visibility? && status.account.user&.setting_reject_public_unlisted_subscription) ||
(@domain_block.detect_invalid_subscription && status.public_visibility? && status.account.user&.setting_reject_unlisted_subscription) ||
(@domain_block.reject_send_sensitive && ((status.with_media? && status.sensitive) || status.spoiler_text?))
end
(@domain_block.detect_invalid_subscription && status.sending_maybe_compromised_privacy?) ||
(@domain_block.reject_send_sensitive && status.sending_sensitive?)
else
false
end

View file

@ -285,7 +285,6 @@ en:
setting_reject_public_unlisted_subscription: Reject sending public unlisted visibility/non-public searchability posts to Misskey, Calckey
setting_reject_unlisted_subscription: Reject sending unlisted visibility/non-public searchability posts to Misskey, Calckey
setting_reverse_search_quote: Perform word-by-word search when search keywords are not enclosed in double quotes
setting_send_without_domain_blocks: Send your post to all server with administrator set as rejecting-post-server for protect you [DEPRECATED]
setting_show_application: Disclose application used to send posts
setting_show_emoji_reaction_on_timeline: Show all stamps on timeline
setting_show_quote_in_home: Show quotes in home, list or antenna timelines

View file

@ -60,7 +60,6 @@ ja:
person: これは人が使用している通常のアカウントです
phrase: 投稿内容の大文字小文字や閲覧注意に関係なく一致
scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
setting_send_without_domain_blocks: 管理人が同人コンテンツの配送にふさわしくないと判断したサーバーに、制限に関係なく全ての投稿を配送します。ただし何が起きても自己責任になります
setting_aggregate_reblogs: 最近ブーストされた投稿が新たにブーストされても表示しません (設定後受信したものにのみ影響)
setting_always_send_emails: 通常、Mastodon からメール通知は行われません。
setting_bookmark_category_needed: すべてのカテゴリから削除したとき、ブックマークが自動で外れるようになります
@ -296,7 +295,6 @@ ja:
setting_reject_public_unlisted_subscription: Misskey系サーバーに「ローカル公開」かつ検索許可「誰でも以外」の投稿を「フォロワーのみ」に変換して配送する
setting_reject_unlisted_subscription: Misskey系サーバーに「非収載」かつ検索許可「誰でも以外」の投稿を「フォロワーのみ」に変換して配送する
setting_reverse_search_quote: ダブルクオートで囲まず検索した時、単語単位で検索する
setting_send_without_domain_blocks: 管理人の設定した配送停止設定を拒否する (非推奨)
setting_show_application: 送信したアプリを開示する
setting_show_emoji_reaction_on_timeline: タイムライン上に他の人のつけたスタンプを表示する
setting_simple_timeline_menu: タイムライン上でメニューの項目を減らす

View file

@ -158,19 +158,24 @@ RSpec.describe ActivityPub::TagManager do
end
it 'returns public collection for public status' do
status = Fabricate(:status, visibility: :public)
status = Fabricate(:status, account: user.account, visibility: :public)
expect(subject.cc_for_misskey(status)).to eq [account_followers_url(status.account)]
end
it 'returns empty array for public_unlisted status' do
status = Fabricate(:status, account: user.account, visibility: :public_unlisted)
status = Fabricate(:status, account: user.account, visibility: :public_unlisted, searchability: :private)
expect(subject.cc_for_misskey(status)).to eq []
end
it 'returns empty array for unlisted status' do
status = Fabricate(:status, account: user.account, visibility: :unlisted)
status = Fabricate(:status, account: user.account, visibility: :unlisted, searchability: :private)
expect(subject.cc_for_misskey(status)).to eq []
end
it 'returns public collection for unlisted status but public searchability' do
status = Fabricate(:status, account: user.account, visibility: :unlisted, searchability: :public)
expect(subject.cc_for_misskey(status)).to eq ['https://www.w3.org/ns/activitystreams#Public']
end
end
describe '#searchable_by' do

View file

@ -8,7 +8,7 @@ describe ActivityPub::NoteForMisskeySerializer do
let(:serialization) { ActiveModelSerializers::SerializableResource.new(parent, serializer: described_class, adapter: ActivityPub::Adapter) }
let!(:account) { Fabricate(:account) }
let!(:other) { Fabricate(:account) }
let!(:parent) { Fabricate(:status, account: account, visibility: :unlisted) }
let!(:parent) { Fabricate(:status, account: account, visibility: :unlisted, searchability: :private) }
let!(:reply_by_account_first) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
let!(:reply_by_account_next) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
let!(:reply_by_other_first) { Fabricate(:status, account: other, thread: parent, visibility: :public) }