# frozen_string_literal: true module Admin class CustomEmojisController < BaseController before_action :set_custom_emoji, except: [:index, :new, :create] before_action :set_filter_params include ObfuscateFilename obfuscate_filename [:custom_emoji, :image] def index authorize :custom_emoji, :index? @custom_emojis = filtered_custom_emojis.eager_load(:local_counterpart).page(params[:page]) end def new authorize :custom_emoji, :create? @custom_emoji = CustomEmoji.new end def create authorize :custom_emoji, :create? @custom_emoji = CustomEmoji.new(resource_params) if @custom_emoji.save log_action :create, @custom_emoji redirect_to admin_custom_emojis_path, notice: I18n.t('admin.custom_emojis.created_msg') else render :new end end def update authorize @custom_emoji, :update? if @custom_emoji.update(resource_params) log_action :update, @custom_emoji flash[:notice] = I18n.t('admin.custom_emojis.updated_msg') else flash[:alert] = I18n.t('admin.custom_emojis.update_failed_msg') end redirect_to admin_custom_emojis_path(page: params[:page], **@filter_params) end def destroy authorize @custom_emoji, :destroy? @custom_emoji.destroy! log_action :destroy, @custom_emoji flash[:notice] = I18n.t('admin.custom_emojis.destroyed_msg') redirect_to admin_custom_emojis_path(page: params[:page], **@filter_params) end def copy authorize @custom_emoji, :copy? emoji = CustomEmoji.find_or_initialize_by(domain: nil, shortcode: @custom_emoji.shortcode) emoji.image = @custom_emoji.image if emoji.save log_action :create, emoji flash[:notice] = I18n.t('admin.custom_emojis.copied_msg') else flash[:alert] = I18n.t('admin.custom_emojis.copy_failed_msg') end redirect_to admin_custom_emojis_path(page: params[:page], **@filter_params) end def enable authorize @custom_emoji, :enable? @custom_emoji.update!(disabled: false) log_action :enable, @custom_emoji flash[:notice] = I18n.t('admin.custom_emojis.enabled_msg') redirect_to admin_custom_emojis_path(page: params[:page], **@filter_params) end def disable authorize @custom_emoji, :disable? @custom_emoji.update!(disabled: true) log_action :disable, @custom_emoji flash[:notice] = I18n.t('admin.custom_emojis.disabled_msg') redirect_to admin_custom_emojis_path(page: params[:page], **@filter_params) end private def set_custom_emoji @custom_emoji = CustomEmoji.find(params[:id]) end def set_filter_params @filter_params = filter_params.to_hash.symbolize_keys end def resource_params params.require(:custom_emoji).permit(:shortcode, :image, :visible_in_picker) end def filtered_custom_emojis CustomEmojiFilter.new(filter_params).results end def filter_params params.permit( :local, :remote, :by_domain, :shortcode ) end end end