forked from cybrespace/mastodon
Add setting a always mark media as sensitive (#4136)
This commit is contained in:
parent
617208053c
commit
2b9721d1b3
|
@ -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…
Reference in New Issue