docbrown/app/controllers/users/settings_controller.rb

55 lines
1.8 KiB
Ruby

module Users
class SettingsController < ApplicationController
before_action :check_suspended
before_action :authenticate_user!
after_action :verify_authorized
ALLOWED_PARAMS = %i[config_theme
config_font
config_navbar
display_announcements
display_sponsors
editor_version
experience_level
feed_fetched_at
feed_mark_canonical
feed_referential_link
feed_url
inbox_guidelines
inbox_type
permit_adjacent_sponsors].freeze
def update
authorize current_user, policy_class: UserPolicy
users_setting = current_user.setting
tab = params["users_setting"]["tab"] || "profile"
if users_setting.update(users_setting_params)
import_articles_from_feed(users_setting)
if users_setting.experience_level.present?
cookies.permanent[:user_experience_level] = users_setting.experience_level.to_s
end
current_user.touch(:profile_updated_at)
flash[:settings_notice] = I18n.t("users_controller.updated_config")
else
Honeycomb.add_field("error", users_setting.errors.messages.compact_blank)
Honeycomb.add_field("errored", true)
flash[:error] = users_setting.errors_as_sentence
end
redirect_to user_settings_path(tab)
end
private
def import_articles_from_feed(users_setting)
return if users_setting.feed_url.blank?
Feeds::ImportArticlesWorker.perform_async(users_setting.user_id)
end
def users_setting_params
params.require(:users_setting).permit(ALLOWED_PARAMS)
end
end
end