From 4311fff076c79335fd2a76b4abfe4f43e03a84ab Mon Sep 17 00:00:00 2001 From: Essem Date: Sun, 14 Jan 2024 15:59:27 -0600 Subject: [PATCH] Move reaction normalization to API controller --- .../api/v1/statuses/reactions_controller.rb | 11 +++++++++-- app/services/react_service.rb | 3 --- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/controllers/api/v1/statuses/reactions_controller.rb b/app/controllers/api/v1/statuses/reactions_controller.rb index 2d7e4f5984..1d8382f833 100644 --- a/app/controllers/api/v1/statuses/reactions_controller.rb +++ b/app/controllers/api/v1/statuses/reactions_controller.rb @@ -8,12 +8,12 @@ class Api::V1::Statuses::ReactionsController < Api::BaseController before_action :set_status def create - ReactService.new.call(current_account, @status, params[:id]) + ReactService.new.call(current_account, @status, normalize(params[:id])) render json: @status, serializer: REST::StatusSerializer end def destroy - UnreactWorker.perform_async(current_account.id, @status.id, params[:id]) + UnreactWorker.perform_async(current_account.id, @status.id, normalize(params[:id])) render json: @status, serializer: REST::StatusSerializer, relationships: StatusRelationshipsPresenter.new([@status], current_account.id, reactions_map: { @status.id => false }) rescue Mastodon::NotPermittedError @@ -22,6 +22,13 @@ class Api::V1::Statuses::ReactionsController < Api::BaseController private + def normalize(name) + normalized = "#{name}\uFE0F" + return normalized if StatusReactionValidator::SUPPORTED_EMOJIS.include?(normalized) + + name + end + def set_status @status = Status.find(params[:status_id]) authorize @status, :show? diff --git a/app/services/react_service.rb b/app/services/react_service.rb index be19bd8501..cfc3f99a78 100644 --- a/app/services/react_service.rb +++ b/app/services/react_service.rb @@ -10,9 +10,6 @@ class ReactService < BaseService name, domain = emoji.split('@') return unless domain.nil? || status.local? - normalized = "#{name}\uFE0F" - name = normalized if StatusReactionValidator::SUPPORTED_EMOJIS.include?(normalized) - custom_emoji = CustomEmoji.find_by(shortcode: name, domain: domain) reaction = StatusReaction.find_by(account: account, status: status, name: name, custom_emoji: custom_emoji) return reaction unless reaction.nil?