Fix: 他のサーバーの同じ絵文字を複数つけられる問題 (#141)

* スタンプ機能のリファクタリング、投稿の反応者へも配送

* Fix: 他のサーバーの絵文字を複数つけられる問題
This commit is contained in:
KMY(雪あすか) 2023-10-18 10:56:21 +09:00 committed by GitHub
parent b73eb1b847
commit 1d9c77063e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 12 deletions

View file

@ -17,14 +17,14 @@ class EmojiReactService < BaseService
@status = status
with_redis_lock("emoji_reaction:#{status.id}") do
@emoji_reaction = EmojiReaction.find_by(account: account, status: status, name: name)
raise Mastodon::ValidationError, I18n.t('reactions.errors.duplication') unless @emoji_reaction.nil?
shortcode, domain = name.split('@')
domain = nil if TagManager.instance.local_domain?(domain)
custom_emoji = CustomEmoji.find_by(shortcode: shortcode, domain: domain)
return if domain.present? && !EmojiReaction.exists?(status: status, custom_emoji: custom_emoji)
@emoji_reaction = EmojiReaction.find_by(account: account, status: status, name: shortcode, custom_emoji: custom_emoji)
raise Mastodon::ValidationError, I18n.t('reactions.errors.duplication') unless @emoji_reaction.nil?
@emoji_reaction = EmojiReaction.create!(account: account, status: status, name: shortcode, custom_emoji: custom_emoji)
status.touch # rubocop:disable Rails/SkipsModelValidations