# frozen_string_literal: true module Admin class SettingsController < BaseController ADMIN_SETTINGS = %w( site_contact_username site_contact_email site_title site_description site_extended_description site_terms open_registrations closed_registrations_message open_deletion timeline_preview show_staff_badge bootstrap_timeline_accounts thumbnail min_invite_role activity_api_enabled peers_api_enabled show_known_fediverse_at_about_page ).freeze BOOLEAN_SETTINGS = %w( open_registrations open_deletion timeline_preview show_staff_badge activity_api_enabled peers_api_enabled show_known_fediverse_at_about_page ).freeze UPLOAD_SETTINGS = %w( thumbnail ).freeze def edit authorize :settings, :show? @admin_settings = Form::AdminSettings.new end def update authorize :settings, :update? settings_params.each do |key, value| if UPLOAD_SETTINGS.include?(key) upload = SiteUpload.where(var: key).first_or_initialize(var: key) upload.update(file: value) else setting = Setting.where(var: key).first_or_initialize(var: key) setting.update(value: value_for_update(key, value)) end end flash[:notice] = I18n.t('generic.changes_saved_msg') redirect_to edit_admin_settings_path end private def settings_params params.require(:form_admin_settings).permit(ADMIN_SETTINGS) end def value_for_update(key, value) if BOOLEAN_SETTINGS.include?(key) value == '1' else value end end end end