Add setting a always mark media as sensitive (#4136)
This commit is contained in:
		
							parent
							
								
									617208053c
								
							
						
					
					
						commit
						2b9721d1b3
					
				
					 9 changed files with 29 additions and 0 deletions
				
			
		| 
						 | 
					@ -34,6 +34,7 @@ class Settings::PreferencesController < ApplicationController
 | 
				
			||||||
  def user_settings_params
 | 
					  def user_settings_params
 | 
				
			||||||
    params.require(:user).permit(
 | 
					    params.require(:user).permit(
 | 
				
			||||||
      :setting_default_privacy,
 | 
					      :setting_default_privacy,
 | 
				
			||||||
 | 
					      :setting_default_sensitive,
 | 
				
			||||||
      :setting_boost_modal,
 | 
					      :setting_boost_modal,
 | 
				
			||||||
      :setting_delete_modal,
 | 
					      :setting_delete_modal,
 | 
				
			||||||
      :setting_auto_play_gif,
 | 
					      :setting_auto_play_gif,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,6 +45,7 @@ const initialState = Immutable.Map({
 | 
				
			||||||
  suggestions: Immutable.List(),
 | 
					  suggestions: Immutable.List(),
 | 
				
			||||||
  me: null,
 | 
					  me: null,
 | 
				
			||||||
  default_privacy: 'public',
 | 
					  default_privacy: 'public',
 | 
				
			||||||
 | 
					  default_sensitive: false,
 | 
				
			||||||
  resetFileKey: Math.floor((Math.random() * 0x10000)),
 | 
					  resetFileKey: Math.floor((Math.random() * 0x10000)),
 | 
				
			||||||
  idempotencyKey: null,
 | 
					  idempotencyKey: null,
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					@ -75,6 +76,8 @@ function clearAll(state) {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function appendMedia(state, media) {
 | 
					function appendMedia(state, media) {
 | 
				
			||||||
 | 
					  const prevSize = state.get('media_attachments').size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return state.withMutations(map => {
 | 
					  return state.withMutations(map => {
 | 
				
			||||||
    map.update('media_attachments', list => list.push(media));
 | 
					    map.update('media_attachments', list => list.push(media));
 | 
				
			||||||
    map.set('is_uploading', false);
 | 
					    map.set('is_uploading', false);
 | 
				
			||||||
| 
						 | 
					@ -82,6 +85,10 @@ function appendMedia(state, media) {
 | 
				
			||||||
    map.update('text', oldText => `${oldText.trim()} ${media.get('text_url')}`);
 | 
					    map.update('text', oldText => `${oldText.trim()} ${media.get('text_url')}`);
 | 
				
			||||||
    map.set('focusDate', new Date());
 | 
					    map.set('focusDate', new Date());
 | 
				
			||||||
    map.set('idempotencyKey', uuid());
 | 
					    map.set('idempotencyKey', uuid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (prevSize === 0 && state.get('default_sensitive')) {
 | 
				
			||||||
 | 
					      map.set('sensitive', true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ class UserSettingsDecorator
 | 
				
			||||||
    user.settings['notification_emails'] = merged_notification_emails
 | 
					    user.settings['notification_emails'] = merged_notification_emails
 | 
				
			||||||
    user.settings['interactions'] = merged_interactions
 | 
					    user.settings['interactions'] = merged_interactions
 | 
				
			||||||
    user.settings['default_privacy'] = default_privacy_preference
 | 
					    user.settings['default_privacy'] = default_privacy_preference
 | 
				
			||||||
 | 
					    user.settings['default_sensitive'] = default_sensitive_preference
 | 
				
			||||||
    user.settings['boost_modal'] = boost_modal_preference
 | 
					    user.settings['boost_modal'] = boost_modal_preference
 | 
				
			||||||
    user.settings['delete_modal'] = delete_modal_preference
 | 
					    user.settings['delete_modal'] = delete_modal_preference
 | 
				
			||||||
    user.settings['auto_play_gif'] = auto_play_gif_preference
 | 
					    user.settings['auto_play_gif'] = auto_play_gif_preference
 | 
				
			||||||
| 
						 | 
					@ -36,6 +37,10 @@ class UserSettingsDecorator
 | 
				
			||||||
    settings['setting_default_privacy']
 | 
					    settings['setting_default_privacy']
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def default_sensitive_preference
 | 
				
			||||||
 | 
					    boolean_cast_setting 'setting_default_sensitive'
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def boost_modal_preference
 | 
					  def boost_modal_preference
 | 
				
			||||||
    boolean_cast_setting 'setting_boost_modal'
 | 
					    boolean_cast_setting 'setting_boost_modal'
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,10 @@ class User < ApplicationRecord
 | 
				
			||||||
    settings.default_privacy || (account.locked? ? 'private' : 'public')
 | 
					    settings.default_privacy || (account.locked? ? 'private' : 'public')
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def setting_default_sensitive
 | 
				
			||||||
 | 
					    settings.default_sensitive
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def setting_boost_modal
 | 
					  def setting_boost_modal
 | 
				
			||||||
    settings.boost_modal
 | 
					    settings.boost_modal
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,6 +23,7 @@ class InitialStateSerializer < ActiveModel::Serializer
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      me: object.current_account.id,
 | 
					      me: object.current_account.id,
 | 
				
			||||||
      default_privacy: object.current_account.user.setting_default_privacy,
 | 
					      default_privacy: object.current_account.user.setting_default_privacy,
 | 
				
			||||||
 | 
					      default_sensitive: object.current_account.user.setting_default_sensitive,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ class REST::CredentialAccountSerializer < REST::AccountSerializer
 | 
				
			||||||
    user = object.user
 | 
					    user = object.user
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      privacy: user.setting_default_privacy,
 | 
					      privacy: user.setting_default_privacy,
 | 
				
			||||||
 | 
					      sensitive: user.setting_default_sensitive,
 | 
				
			||||||
      note: object.note,
 | 
					      note: object.note,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    = f.input :setting_default_privacy, collection: Status.visibilities.keys - ['direct'], wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
 | 
					    = f.input :setting_default_privacy, collection: Status.visibilities.keys - ['direct'], wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  .fields-group
 | 
					  .fields-group
 | 
				
			||||||
    = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
 | 
					    = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
 | 
				
			||||||
      = ff.input :follow, as: :boolean, wrapper: :with_label
 | 
					      = ff.input :follow, as: :boolean, wrapper: :with_label
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,7 @@ en:
 | 
				
			||||||
        setting_auto_play_gif: Auto-play animated GIFs
 | 
					        setting_auto_play_gif: Auto-play animated GIFs
 | 
				
			||||||
        setting_boost_modal: Show confirmation dialog before boosting
 | 
					        setting_boost_modal: Show confirmation dialog before boosting
 | 
				
			||||||
        setting_default_privacy: Post privacy
 | 
					        setting_default_privacy: Post privacy
 | 
				
			||||||
 | 
					        setting_default_sensitive: Always mark media as sensitive
 | 
				
			||||||
        setting_delete_modal: Show confirmation dialog before deleting a toot
 | 
					        setting_delete_modal: Show confirmation dialog before deleting a toot
 | 
				
			||||||
        setting_system_font_ui: Use system's default font
 | 
					        setting_system_font_ui: Use system's default font
 | 
				
			||||||
        severity: Severity
 | 
					        severity: Severity
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,6 +28,13 @@ describe UserSettingsDecorator do
 | 
				
			||||||
      expect(user.settings['default_privacy']).to eq 'public'
 | 
					      expect(user.settings['default_privacy']).to eq 'public'
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'updates the user settings value for sensitive' do
 | 
				
			||||||
 | 
					      values = { 'setting_default_sensitive' => '1' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      settings.update(values)
 | 
				
			||||||
 | 
					      expect(user.settings['default_sensitive']).to eq true
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    it 'updates the user settings value for boost modal' do
 | 
					    it 'updates the user settings value for boost modal' do
 | 
				
			||||||
      values = { 'setting_boost_modal' => '1' }
 | 
					      values = { 'setting_boost_modal' => '1' }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue