Change: #185 『スタンプをつけられた人』ではなく『スタンプをつけた人』のフォロワーにスタンプを転送 (#232)

* Change: #185 『スタンプをつけられた人』ではなく『スタンプをつけた人』のフォロワーにスタンプを転送

* Fix: 絵文字削除が届かない問題

* Test: 送る方にも同じテストを追加
This commit is contained in:
KMY(雪あすか) 2023-11-04 21:27:59 +09:00 committed by GitHub
parent a1d197dfef
commit 24909f9760
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 134 additions and 91 deletions

View file

@ -4,23 +4,23 @@ class UnEmojiReactService < BaseService
include Redisable
include Payloadable
def call(account_id, status_id, emoji_reaction = nil)
@status = Status.find(status_id)
def call(account, status, emoji_reaction = nil)
@account = account
@status = status
if emoji_reaction
emoji_reaction.destroy!
@status.touch # rubocop:disable Rails/SkipsModelValidations
status.touch # rubocop:disable Rails/SkipsModelValidations
create_notification(emoji_reaction) if !@status.account.local? && @status.account.activitypub?
notify_to_followers(emoji_reaction) if @status.account.local?
notify_to_followers(emoji_reaction)
write_stream(emoji_reaction)
relay_for_undo_emoji_reaction!(emoji_reaction)
relay_friend_for_undo_emoji_reaction!(emoji_reaction)
else
account = Account.find(account_id)
bulk(account, @status)
bulk(account, status)
end
emoji_reaction
end
@ -28,8 +28,8 @@ class UnEmojiReactService < BaseService
private
def bulk(account, status)
EmojiReaction.where(account: account).where(status: status).each do |emoji_reaction|
call(account.id, status.id, emoji_reaction)
EmojiReaction.where(account: account, status: status).each do |emoji_reaction|
call(account, status, emoji_reaction)
end
end
@ -38,7 +38,7 @@ class UnEmojiReactService < BaseService
end
def notify_to_followers(emoji_reaction)
ActivityPub::RawDistributionWorker.perform_async(build_json(emoji_reaction), @status.account_id)
ActivityPub::RawDistributionWorker.perform_async(build_json(emoji_reaction), @account.id)
end
def write_stream(emoji_reaction)