From d7a251edc947fc1c8c52edaf2a610f4ec701405a Mon Sep 17 00:00:00 2001 From: KMY Date: Sat, 25 Feb 2023 11:14:16 +0900 Subject: [PATCH] Add emoji react api POST method (same PUT) --- .../api/v1/statuses/emoji_reactions_controller.rb | 12 ++++++++---- app/javascript/mastodon/actions/interactions.js | 2 +- config/routes.rb | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/api/v1/statuses/emoji_reactions_controller.rb b/app/controllers/api/v1/statuses/emoji_reactions_controller.rb index 790ea0adcc..2214b016f0 100644 --- a/app/controllers/api/v1/statuses/emoji_reactions_controller.rb +++ b/app/controllers/api/v1/statuses/emoji_reactions_controller.rb @@ -5,12 +5,16 @@ class Api::V1::Statuses::EmojiReactionsController < Api::BaseController before_action -> { doorkeeper_authorize! :write, :'write:emoji_reactions' } before_action :require_user! - before_action :set_status, only: [:update] + before_action :set_status, only: [:create, :update] before_action :set_status_without_authorize, only: [:destroy] + def create + create_private(params[:emoji]) + end + # For compatible with Fedibird API def update - create_private + create_private(params[:id]) end def destroy @@ -35,8 +39,8 @@ class Api::V1::Statuses::EmojiReactionsController < Api::BaseController private - def create_private - EmojiReactService.new.call(current_account, @status, params[:id]) + def create_private(emoji) + EmojiReactService.new.call(current_account, @status, emoji) render json: @status, serializer: REST::StatusSerializer end diff --git a/app/javascript/mastodon/actions/interactions.js b/app/javascript/mastodon/actions/interactions.js index 8669484602..788259ce63 100644 --- a/app/javascript/mastodon/actions/interactions.js +++ b/app/javascript/mastodon/actions/interactions.js @@ -207,7 +207,7 @@ export function emojiReact(status, emoji) { return function (dispatch, getState) { dispatch(emojiReactRequest(status, emoji)); - api(getState).put(`/api/v1/statuses/${status.get('id')}/emoji_reactions/${emoji.custom ? (emoji.name + (emoji.domain || '')) : emoji.native}`).then(function (response) { + api(getState).post(`/api/v1/statuses/${status.get('id')}/emoji_reactions`, { emoji: emoji.custom ? (emoji.name + (emoji.domain || '')) : emoji.native }).then(function (response) { dispatch(importFetchedStatus(response.data)); dispatch(emojiReactSuccess(status, emoji)); }).catch(function (error) { diff --git a/config/routes.rb b/config/routes.rb index a9c6e96ed7..9b79366b74 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -459,7 +459,7 @@ Rails.application.routes.draw do post :translate, to: 'translations#create' - resources :emoji_reactions, only: :update, constraints: { id: /[^\/]+/ } + resources :emoji_reactions, only: [:create, :update], constraints: { id: /[^\/]+/ } post :emoji_unreaction, to: 'emoji_reactions#destroy' end