Add reaction deck
This commit is contained in:
parent
db5c358f4f
commit
f1625fe101
24 changed files with 404 additions and 13 deletions
45
app/controllers/api/v1/reaction_deck_controller.rb
Normal file
45
app/controllers/api/v1/reaction_deck_controller.rb
Normal file
|
@ -0,0 +1,45 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Api::V1::ReactionDeckController < Api::BaseController
|
||||
before_action -> { doorkeeper_authorize! :read, :'read:lists' }, only: [:index]
|
||||
before_action -> { doorkeeper_authorize! :write, :'write:lists' }, only: [:create]
|
||||
|
||||
before_action :require_user!
|
||||
before_action :set_deck, only: [:index, :create]
|
||||
|
||||
rescue_from ArgumentError do |e|
|
||||
render json: { error: e.to_s }, status: 422
|
||||
end
|
||||
|
||||
def index
|
||||
render json: @deck
|
||||
end
|
||||
|
||||
def create
|
||||
(deck_params['emojis'] || []).each do |data|
|
||||
raise ArgumentError if data['id'].to_i >= 16 || data['id'].to_i.negative?
|
||||
|
||||
exists = @deck.find { |dd| dd['id'] == data['id'] }
|
||||
if exists
|
||||
exists['emoji'] = data['emoji'].delete(':')
|
||||
else
|
||||
@deck << { id: data['id'], emoji: data['emoji'].delete(':') }
|
||||
end
|
||||
end
|
||||
@deck = @deck.sort_by { |a| a['id'].to_i }
|
||||
current_user.settings['reaction_deck'] = @deck.to_json
|
||||
current_user.save!
|
||||
|
||||
render json: @deck
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_deck
|
||||
@deck = current_user.setting_reaction_deck ? JSON.parse(current_user.setting_reaction_deck) : []
|
||||
end
|
||||
|
||||
def deck_params
|
||||
params
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue