Change: #375 投稿を編集して拡張ドメインブロックの条件にひっかかる状態になった場合、対象サーバーには投稿削除のActivityを送信する (#495)

* Change: #375 投稿を編集して拡張ドメインブロックの条件にひっかかる状態になった場合、対象サーバーには投稿削除のActivityを送信する

* Fix test

* Add test
This commit is contained in:
KMY(雪あすか) 2024-01-24 09:03:24 +09:00 committed by GitHub
parent e4375143ca
commit fcd13a6474
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 146 additions and 12 deletions

View file

@ -12,6 +12,7 @@ class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWor
distribute_limited!
else
distribute!
distribute_delete_activity!
end
rescue ActiveRecord::RecordNotFound
true
@ -19,6 +20,17 @@ class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWor
protected
def inboxes
return super if @status.limited_visibility?
return super unless sensitive?
super - inboxes_diff_for_sending_domain_block
end
def inboxes_diff_for_sending_domain_block
status_reach_finder.inboxes_diff_for_sending_domain_block
end
def inboxes_for_limited
@inboxes_for_limited ||= @status.mentioned_accounts.inboxes
end
@ -47,7 +59,30 @@ class ActivityPub::StatusUpdateDistributionWorker < ActivityPub::DistributionWor
build_activity(for_friend: true)
end
def delete_activity
@delete_activity ||= Oj.dump(serialize_payload(@status, ActivityPub::DeleteSerializer, signer: @account))
end
def distribute_delete_activity!
return unless sensitive_changed?
target_inboxes = inboxes_diff_for_sending_domain_block
return if target_inboxes.empty?
ActivityPub::DeliveryWorker.push_bulk(target_inboxes, limit: 1_000) do |inbox_url|
[delete_activity, @account.id, inbox_url, {}]
end
end
def always_sign
@status.limited_visibility?
end
def sensitive?
@options[:sensitive]
end
def sensitive_changed?
@options[:sensitive_changed]
end
end