55 lines
1.8 KiB
Ruby
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
|