diff options
Diffstat (limited to 'app/controllers/settings/preferences_controller.rb')
-rw-r--r-- | app/controllers/settings/preferences_controller.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb new file mode 100644 index 00000000000..25ec2a434a4 --- /dev/null +++ b/app/controllers/settings/preferences_controller.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class Settings::PreferencesController < Settings::ApplicationController + before_action :user + + def show + end + + def update + begin + result = Users::UpdateService.new(current_user, preferences_params.merge(user: user)).execute + + if result[:status] == :success + flash[:notice] = _('Preferences saved.') + else + flash[:alert] = _('Failed to save preferences.') + end + rescue ArgumentError => e + # Raised when `dashboard` is given an invalid value. + flash[:alert] = _("Failed to save preferences (%{error_message}).") % { error_message: e.message } + end + + respond_to do |format| + format.html { redirect_to settings_preferences_path } + format.js + end + end + + private + + def user + @user = current_user + end + + def preferences_params + params.require(:user).permit(preferences_param_names) + end + + def preferences_param_names + [ + :color_scheme_id, + :layout, + :dashboard, + :project_view, + :theme_id, + :first_day_of_week, + :preferred_language, + :time_display_relative, + :time_format_in_24h + ] + end +end |