Add default federation option to settings
This commit is contained in:
		| @ -33,6 +33,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController | ||||
|       'setting_default_privacy' => source_params.fetch(:privacy, @account.user.setting_default_privacy), | ||||
|       'setting_default_sensitive' => source_params.fetch(:sensitive, @account.user.setting_default_sensitive), | ||||
|       'setting_default_language' => source_params.fetch(:language, @account.user.setting_default_language), | ||||
|       'setting_default_federation' => source_params.fetch(:sensitive, @account.user.setting_default_federation), | ||||
|     } | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -36,6 +36,7 @@ class Settings::PreferencesController < ApplicationController | ||||
|       :setting_default_privacy, | ||||
|       :setting_default_sensitive, | ||||
|       :setting_default_language, | ||||
|       :setting_default_federation, | ||||
|       :setting_unfollow_modal, | ||||
|       :setting_boost_modal, | ||||
|       :setting_delete_modal, | ||||
|  | ||||
| @ -20,6 +20,7 @@ class UserSettingsDecorator | ||||
|     user.settings['default_privacy']         = default_privacy_preference if change?('setting_default_privacy') | ||||
|     user.settings['default_sensitive']       = default_sensitive_preference if change?('setting_default_sensitive') | ||||
|     user.settings['default_language']        = default_language_preference if change?('setting_default_language') | ||||
|     user.settings['default_federation']       = default_federation_preference if change?('setting_default_federation') | ||||
|     user.settings['unfollow_modal']          = unfollow_modal_preference if change?('setting_unfollow_modal') | ||||
|     user.settings['boost_modal']             = boost_modal_preference if change?('setting_boost_modal') | ||||
|     user.settings['delete_modal']            = delete_modal_preference if change?('setting_delete_modal') | ||||
| @ -48,6 +49,10 @@ class UserSettingsDecorator | ||||
|     boolean_cast_setting 'setting_default_sensitive' | ||||
|   end | ||||
|  | ||||
|   def default_federation_preference | ||||
|     boolean_cast_setting 'setting_default_federation' | ||||
|   end | ||||
|  | ||||
|   def unfollow_modal_preference | ||||
|     boolean_cast_setting 'setting_unfollow_modal' | ||||
|   end | ||||
|  | ||||
| @ -96,7 +96,7 @@ class User < ApplicationRecord | ||||
|  | ||||
|   delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal, | ||||
|            :reduce_motion, :system_font_ui, :noindex, :theme, :display_sensitive_media, :hide_network, | ||||
|            :default_language, to: :settings, prefix: :setting, allow_nil: false | ||||
|            :default_language, :default_federation, to: :settings, prefix: :setting, allow_nil: false | ||||
|  | ||||
|   attr_reader :invite_code | ||||
|  | ||||
|  | ||||
| @ -38,6 +38,7 @@ class InitialStateSerializer < ActiveModel::Serializer | ||||
|       store[:me]                = object.current_account.id.to_s | ||||
|       store[:default_privacy]   = object.current_account.user.setting_default_privacy | ||||
|       store[:default_sensitive] = object.current_account.user.setting_default_sensitive | ||||
|       store[:default_federation] = object.current_account.user.setting_default_federation | ||||
|     end | ||||
|  | ||||
|     store[:text] = object.text if object.text | ||||
|  | ||||
| @ -10,6 +10,7 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer | ||||
|       privacy: user.setting_default_privacy, | ||||
|       sensitive: user.setting_default_sensitive, | ||||
|       language: user.setting_default_language, | ||||
|       federation: user.setting_default_federation, | ||||
|       note: object.note, | ||||
|       fields: object.fields.map(&:to_h), | ||||
|     } | ||||
|  | ||||
| @ -32,7 +32,7 @@ class PostStatusService < BaseService | ||||
|                                         visibility: options[:visibility] || account.user&.setting_default_privacy, | ||||
|                                         language: language_from_option(options[:language]) || account.user&.setting_default_language&.presence || LanguageDetector.instance.detect(text, account), | ||||
|                                         application: options[:application], | ||||
|                                         local_only: local_only_option(options[:local_only], in_reply_to)) | ||||
|                                         local_only: local_only_option(options[:local_only], in_reply_to, account.user&.setting_default_federation)) | ||||
|     end | ||||
|  | ||||
|     process_hashtags_service.call(status) | ||||
| @ -58,8 +58,9 @@ class PostStatusService < BaseService | ||||
|  | ||||
|   private | ||||
|  | ||||
|   def local_only_option(local_only, in_reply_to) | ||||
|   def local_only_option(local_only, in_reply_to, federation_setting) | ||||
|     return in_reply_to&.local_only? if local_only.nil? # XXX temporary, just until clients implement to avoid leaking local_only posts | ||||
|     return federation_setting if local_only.nil? | ||||
|     local_only | ||||
|   end | ||||
|  | ||||
|  | ||||
| @ -23,6 +23,8 @@ | ||||
|  | ||||
|     = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label | ||||
|  | ||||
|     = f.input :setting_default_federation, as: :boolean, wrapper: :with_label | ||||
|  | ||||
|   %h4= t 'preferences.other' | ||||
|  | ||||
|   .fields-group | ||||
|  | ||||
| @ -65,6 +65,7 @@ en: | ||||
|         phrase: Keyword or phrase | ||||
|         setting_auto_play_gif: Auto-play animated GIFs | ||||
|         setting_boost_modal: Show confirmation dialog before boosting | ||||
|         setting_default_federation: Always allow my toots to reach other instances | ||||
|         setting_default_language: Posting language | ||||
|         setting_default_privacy: Post privacy | ||||
|         setting_default_sensitive: Always mark media as sensitive | ||||
|  | ||||
| @ -65,6 +65,7 @@ pt-BR: | ||||
|         phrase: Palavra-chave ou frase | ||||
|         setting_auto_play_gif: Reproduzir GIFs automaticamente | ||||
|         setting_boost_modal: Mostrar diálogo de confirmação antes de compartilhar postagem | ||||
|         setting_default_federation: Sempre permitir que meus toots cheguem em outras instâncias | ||||
|         setting_default_language: Idioma das postagens | ||||
|         setting_default_privacy: Privacidade das postagens | ||||
|         setting_default_sensitive: Sempre marcar mídia como sensível | ||||
|  | ||||
| @ -21,6 +21,7 @@ defaults: &defaults | ||||
|   timeline_preview: true | ||||
|   show_staff_badge: true | ||||
|   default_sensitive: false | ||||
|   default_federation: true | ||||
|   hide_network: false | ||||
|   unfollow_modal: false | ||||
|   boost_modal: false | ||||
|  | ||||
		Reference in New Issue
	
	Block a user