def show; end
def update
- current_user.settings['notification_emails'] = {
- follow: user_params[:notification_emails][:follow] == '1',
- follow_request: user_params[:notification_emails][:follow_request] == '1',
- reblog: user_params[:notification_emails][:reblog] == '1',
- favourite: user_params[:notification_emails][:favourite] == '1',
- mention: user_params[:notification_emails][:mention] == '1',
- digest: user_params[:notification_emails][:digest] == '1',
- }
-
- current_user.settings['interactions'] = {
- must_be_follower: user_params[:interactions][:must_be_follower] == '1',
- must_be_following: user_params[:interactions][:must_be_following] == '1',
- }
-
- current_user.settings['default_privacy'] = user_params[:setting_default_privacy]
- current_user.settings['boost_modal'] = user_params[:setting_boost_modal] == '1'
-
- if current_user.update(user_params.except(:notification_emails, :interactions, :setting_default_privacy, :setting_boost_modal))
+ user_settings.update(user_settings_params.to_h)
+
+ if current_user.update(user_params)
+ I18n.locale = current_user.locale
redirect_to settings_preferences_path, notice: I18n.t('generic.changes_saved_msg')
else
- render action: :show
+ render :show
end
end
private
+ def user_settings
+ UserSettingsDecorator.new(current_user)
+ end
+
def user_params
- params.require(:user).permit(:locale, :setting_default_privacy, :setting_boost_modal, notification_emails: [:follow, :follow_request, :reblog, :favourite, :mention, :digest], interactions: [:must_be_follower, :must_be_following])
+ params.require(:user).permit(
+ :locale,
+ chosen_languages: []
+ )
+ end
+
+ def user_settings_params
+ params.require(:user).permit(
+ :setting_default_privacy,
+ :setting_default_sensitive,
+ :setting_default_language,
+ :setting_unfollow_modal,
+ :setting_boost_modal,
+ :setting_delete_modal,
+ :setting_auto_play_gif,
+ :setting_display_sensitive_media,
+ :setting_reduce_motion,
+ :setting_system_font_ui,
+ :setting_noindex,
+ :setting_theme,
+ :setting_hide_network,
+ notification_emails: %i(follow follow_request reblog favourite mention digest),
+ interactions: %i(must_be_follower must_be_following)
+ )
end
end