Files
mastodon/app/controllers/settings/preferences/posting_defaults_controller.rb

39 lines
1.4 KiB
Ruby

# frozen_string_literal: true
class Settings::Preferences::PostingDefaultsController < Settings::Preferences::BaseController
private
def split_default_privacy
case current_user.setting_default_privacy
when 'public', 'unlisted'
'public'
else
'private'
end
end
helper_method :split_default_privacy
def split_default_privacy_discoverable?
current_user.setting_default_privacy == 'public'
end
helper_method :split_default_privacy_discoverable?
def after_update_redirect_path
settings_preferences_posting_defaults_path
end
def user_params
params.expect(user: [:locale, :time_zone, chosen_languages: [], settings_attributes: UserSettings.keys + %w(split_default_privacy split_default_privacy_discoverable)]).tap do |params|
if params[:settings_attributes][:split_default_privacy]
default_privacy = params[:settings_attributes].delete(:split_default_privacy)
discoverable = params[:settings_attributes].delete(:split_default_privacy_discoverable)
default_privacy = 'unlisted' if default_privacy == 'public' && !ActiveModel::Type::Boolean.new.cast(discoverable)
params[:settings_attributes][:default_privacy] = default_privacy
end
params[:settings_attributes][:default_quote_policy] = 'nobody' if params[:settings_attributes][:default_privacy] == 'private'
end
end
end