make number of visible reactions a vanilla setting

Reactions will be backported to the vanilla
flavour, which requires all related settings to
be accessible from the vanilla settings page
rather than the glitch specific settings modal.
This commit is contained in:
fef 2022-11-30 14:59:37 +00:00
parent 6d2ad83c02
commit be0bf21f3b
No known key found for this signature in database
GPG key ID: EC22E476DC2D3D84
16 changed files with 23 additions and 26 deletions

View file

@ -57,6 +57,7 @@ class Settings::PreferencesController < Settings::BaseController
:setting_use_pending_items,
:setting_trends,
:setting_crop_images,
:setting_visible_reactions,
:setting_always_send_emails,
notification_emails: %i(follow follow_request reblog favourite mention report pending_account trending_tag trending_link trending_status appeal),
interactions: %i(must_be_follower must_be_following must_be_following_dm)

View file

@ -17,7 +17,7 @@ import NotificationOverlayContainer from 'flavours/glitch/features/notifications
import classNames from 'classnames';
import { autoUnfoldCW } from 'flavours/glitch/utils/content_warning';
import PollContainer from 'flavours/glitch/containers/poll_container';
import { displayMedia } from 'flavours/glitch/initial_state';
import { displayMedia, visibleReactions } from 'flavours/glitch/initial_state';
import PictureInPicturePlaceholder from 'flavours/glitch/components/picture_in_picture_placeholder';
// We use the component (and not the container) since we do not want
@ -808,7 +808,7 @@ class Status extends ImmutablePureComponent {
<StatusReactions
statusId={status.get('id')}
reactions={status.get('reactions')}
numVisible={settings.get('num_visible_reactions')}
numVisible={visibleReactions}
addReaction={this.props.onReactionAdd}
removeReaction={this.props.onReactionRemove}
emojiMap={this.props.emojiMap}

View file

@ -29,7 +29,6 @@ const messages = defineMessages({
rewrite_mentions_username: { id: 'settings.rewrite_mentions_username', defaultMessage: 'Rewrite with username' },
pop_in_left: { id: 'settings.pop_in_left', defaultMessage: 'Left' },
pop_in_right: { id: 'settings.pop_in_right', defaultMessage: 'Right' },
visible_reactions_count: { id: 'settings.visible_reactions_count', defaultMessage: 'Number of visible reactions' },
enter_amount_prompt: { id: 'settings.enter_amount_prompt', defaultMessage: 'Enter an amount' },
});
@ -94,16 +93,6 @@ class LocalSettingsPage extends React.PureComponent {
>
<FormattedMessage id='settings.rewrite_mentions' defaultMessage='Rewrite mentions in displayed statuses' />
</LocalSettingsPageItem>
<LocalSettingsPageItem
settings={settings}
item={['num_visible_reactions']}
id='mastodon-settings--num_visible_reactions'
onChange={onChange}
placeholder={intl.formatMessage(messages.enter_amount_prompt)}
number
>
<FormattedMessage id='settings.num_visible_reactions' defaultMessage='Number of visible reaction badges:' />
</LocalSettingsPageItem>
<section>
<h2><FormattedMessage id='settings.notifications_opts' defaultMessage='Notifications options' /></h2>
<LocalSettingsPageItem

View file

@ -121,8 +121,10 @@ export const expandSpoilers = getMeta('expand_spoilers');
export const forceSingleColumn = !getMeta('advanced_layout');
export const limitedFederationMode = getMeta('limited_federation_mode');
export const mascot = getMeta('mascot');
export const maxReactions = (initialState && initialState.max_reactions) || 1;
export const me = getMeta('me');
export const movedToAccountId = getMeta('moved_to_account_id');
export const visibleReactions = getMeta('visible_reactions');
export const owner = getMeta('owner');
export const profile_directory = getMeta('profile_directory');
export const reduceMotion = getMeta('reduce_motion');
@ -148,7 +150,4 @@ export const pollLimits = (initialState && initialState.poll_limits);
export const defaultContentType = getMeta('default_content_type');
export const useSystemEmojiFont = getMeta('system_emoji_font');
// nyastodon-specific settings
export const maxReactions = (initialState && initialState.max_reactions) || 8;
export default initialState;

View file

@ -6,9 +6,6 @@ const messages = {
'tooltips.reactions': 'Reaktionen',
'settings.enter_amount_prompt': 'Gib eine Zahl ein',
'settings.num_visible_reactions': 'Anzahl sichtbarer Reaktionen',
'status.react': 'Reagieren',
};

View file

@ -22,7 +22,6 @@ const messages = {
'settings.close': 'Close',
'settings.collapsed_statuses': 'Collapsed toots',
'settings.enable_collapsed': 'Enable collapsed toots',
'settings.enter_amount_prompt': 'Enter an amount',
'settings.general': 'General',
'settings.image_backgrounds': 'Image backgrounds',
'settings.image_backgrounds_media': 'Preview collapsed toot media',
@ -30,7 +29,6 @@ const messages = {
'settings.media': 'Media',
'settings.media_letterbox': 'Letterbox media',
'settings.media_fullwidth': 'Full-width media previews',
'settings.num_visible_reactions': 'Number of visible reactions',
'settings.preferences': 'User preferences',
'settings.wide_view': 'Wide view (Desktop mode only)',
'settings.navbar_under': 'Navbar at the bottom (Mobile only)',

View file

@ -6,9 +6,6 @@ const messages = {
'tooltips.reactions': 'Réactions',
'settings.enter_amount_prompt': 'Entrez un montant',
'settings.num_visible_reactions': 'Nombre de réactions visibles',
'status.react': 'Réagir',
};

View file

@ -23,7 +23,6 @@ const initialState = ImmutableMap({
show_content_type_choice: false,
tag_misleading_links: true,
rewrite_mentions: 'no',
num_visible_reactions: 6,
content_warnings : ImmutableMap({
filter : null,
media_outside: false,

View file

@ -43,6 +43,7 @@ class UserSettingsDecorator
user.settings['use_pending_items'] = use_pending_items_preference if change?('setting_use_pending_items')
user.settings['trends'] = trends_preference if change?('setting_trends')
user.settings['crop_images'] = crop_images_preference if change?('setting_crop_images')
user.settings['visible_reactions'] = visible_reactions_preference if change?('setting_visible_reactions')
user.settings['always_send_emails'] = always_send_emails_preference if change?('setting_always_send_emails')
end
@ -158,6 +159,10 @@ class UserSettingsDecorator
boolean_cast_setting 'setting_crop_images'
end
def visible_reactions_preference
integer_cast_setting 'setting_visible_reactions'
end
def always_send_emails_preference
boolean_cast_setting 'setting_always_send_emails'
end
@ -166,6 +171,10 @@ class UserSettingsDecorator
ActiveModel::Type::Boolean.new.cast(settings[key])
end
def integer_cast_setting(key)
ActiveModel::Type::Integer.new.cast(settings[key])
end
def coerced_settings(key)
coerce_values settings.fetch(key, {})
end

View file

@ -134,7 +134,7 @@ class User < ApplicationRecord
delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :favourite_modal, :delete_modal,
:reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_followers_count,
:expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
:advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images, :visible_reactions,
:disable_swiping, :always_send_emails, :default_content_type, :system_emoji_font,
to: :settings, prefix: :setting, allow_nil: false

View file

@ -70,6 +70,7 @@ class InitialStateSerializer < ActiveModel::Serializer
store[:default_content_type] = object.current_account.user.setting_default_content_type
store[:system_emoji_font] = object.current_account.user.setting_system_emoji_font
store[:crop_images] = object.current_account.user.setting_crop_images
store[:visible_reactions] = object.current_account.user.setting_visible_reactions
else
store[:auto_play_gif] = Setting.auto_play_gif
store[:display_media] = Setting.display_media

View file

@ -36,6 +36,9 @@
.fields-group
= f.input :setting_crop_images, as: :boolean, wrapper: :with_label
.fields-group.fields-row__column.fields-row__column-6
= f.input :setting_visible_reactions, wrapper: :with_label, input_html: { type: 'number', data: { default: '6' } }, hint: false
%h4= t 'appearance.discovery'
.fields-group

View file

@ -213,6 +213,7 @@ de:
setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird
setting_use_blurhash: Farbverlauf für verborgene Medien anzeigen
setting_use_pending_items: Langsamer Modus
setting_visible_reactions: Anzahl der sichtbaren Emoji-Reaktionen
severity: Schweregrad
sign_in_token_attempt: Sicherheitscode
title: Titel

View file

@ -213,6 +213,7 @@ en:
setting_unfollow_modal: Show confirmation dialog before unfollowing someone
setting_use_blurhash: Show colorful gradients for hidden media
setting_use_pending_items: Slow mode
setting_visible_reactions: Number of visible emoji reactions
severity: Severity
sign_in_token_attempt: Security code
title: Title

View file

@ -213,6 +213,7 @@ fr:
setting_unfollow_modal: Afficher une fenêtre de confirmation avant de vous désabonner dun compte
setting_use_blurhash: Afficher des dégradés colorés pour les médias cachés
setting_use_pending_items: Mode lent
setting_visible_reactions: Nombre de réactions emoji visibles
severity: Sévérité
sign_in_token_attempt: Code de sécurité
title: Nom

View file

@ -42,6 +42,7 @@ defaults: &defaults
trendable_by_default: false
trending_status_cw: true
crop_images: true
visible_reactions: 6
notification_emails:
follow: true
reblog: false