From f93679566ba84483548e5a61bced7ec2d05c5540 Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 27 May 2023 10:13:18 +0900 Subject: [PATCH] Add reactiondeck limit variable and improve sql --- app/controllers/api/v1/reaction_deck_controller.rb | 11 +++++++++-- app/models/user.rb | 2 ++ app/serializers/rest/instance_serializer.rb | 2 +- app/serializers/rest/v1/instance_serializer.rb | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/controllers/api/v1/reaction_deck_controller.rb b/app/controllers/api/v1/reaction_deck_controller.rb index fe74738d4b..6229eb89d4 100644 --- a/app/controllers/api/v1/reaction_deck_controller.rb +++ b/app/controllers/api/v1/reaction_deck_controller.rb @@ -20,9 +20,16 @@ class Api::V1::ReactionDeckController < Api::BaseController def create deck = [] + shortcodes = [] (deck_params['emojis'] || []).each do |shortcode| - shortcode = shortcode.delete(':') - custom_emoji = CustomEmoji.find_by(shortcode: shortcode, domain: nil) + shortcodes << shortcode.delete(':') + break if shortcodes.length >= User::REACTION_DECK_MAX + end + + custom_emojis = CustomEmoji.where(shortcode: shortcodes, domain: nil) + + shortcodes.each do |shortcode| + custom_emoji = custom_emojis.find { |em| em.shortcode == shortcode } emoji_data = {} diff --git a/app/models/user.rb b/app/models/user.rb index b903344be9..a0678117d4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -65,6 +65,8 @@ class User < ApplicationRecord # to check their feed ACTIVE_DURATION = ENV.fetch('USER_ACTIVE_DAYS', 7).to_i.days.freeze + REACTION_DECK_MAX = 256 + devise :two_factor_authenticatable, otp_secret_encryption_key: Rails.configuration.x.otp_secret diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb index 7b2154aed4..5a06f51e59 100644 --- a/app/serializers/rest/instance_serializer.rb +++ b/app/serializers/rest/instance_serializer.rb @@ -86,7 +86,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer }, reaction_deck: { - max_emojis: 32_767, + max_emojis: User::REACTION_DECK_MAX, }, reactions: { diff --git a/app/serializers/rest/v1/instance_serializer.rb b/app/serializers/rest/v1/instance_serializer.rb index 9c4ae9e3be..537132375e 100644 --- a/app/serializers/rest/v1/instance_serializer.rb +++ b/app/serializers/rest/v1/instance_serializer.rb @@ -92,7 +92,7 @@ class REST::V1::InstanceSerializer < ActiveModel::Serializer }, reaction_deck: { - max_emojis: 32_767, + max_emojis: User::REACTION_DECK_MAX, }, reactions: {