Change emoji reaction duplication check

This commit is contained in:
KMY 2023-07-26 11:33:28 +09:00
parent 3258d09c64
commit c30d4b5162
3 changed files with 22 additions and 10 deletions

View file

@ -1,6 +1,9 @@
# frozen_string_literal: true
class ActivityPub::Activity::Like < ActivityPub::Activity
include Redisable
include Lockable
def perform
@original_status = status_from_uri(object_uri)
@ -44,9 +47,15 @@ class ActivityPub::Activity::Like < ActivityPub::Activity
Trends.statuses.register(@original_status)
end
return if EmojiReaction.where(account: @account, status: @original_status).count >= EmojiReaction::EMOJI_REACTION_PER_ACCOUNT_LIMIT
reaction = nil
with_redis_lock("emoji_reaction:#{@original_status.id}") do
return if EmojiReaction.where(account: @account, status: @original_status).count >= EmojiReaction::EMOJI_REACTION_PER_ACCOUNT_LIMIT
return if EmojiReaction.find_by(account: @account, status: @original_status, name: shortcode)
reaction = @original_status.emoji_reactions.create!(account: @account, name: shortcode, custom_emoji: emoji, uri: @json['id'])
end
reaction = @original_status.emoji_reactions.create!(account: @account, name: shortcode, custom_emoji: emoji, uri: @json['id'])
write_stream(reaction)
if @original_status.account.local?