Add option to disable blurhash previews (#11188)
* Add option to disable blurhash previews * Update option text * Change options order
This commit is contained in:
		
							parent
							
								
									915c619394
								
							
						
					
					
						commit
						3086c645fd
					
				
					 10 changed files with 21 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -54,6 +54,7 @@ class Settings::PreferencesController < Settings::BaseController
 | 
			
		|||
      :setting_aggregate_reblogs,
 | 
			
		||||
      :setting_show_application,
 | 
			
		||||
      :setting_advanced_layout,
 | 
			
		||||
      :setting_use_blurhash,
 | 
			
		||||
      notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
 | 
			
		||||
      interactions: %i(must_be_follower must_be_following must_be_following_dm)
 | 
			
		||||
    )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@ import IconButton from './icon_button';
 | 
			
		|||
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 | 
			
		||||
import { isIOS } from '../is_mobile';
 | 
			
		||||
import classNames from 'classnames';
 | 
			
		||||
import { autoPlayGif, displayMedia } from '../initial_state';
 | 
			
		||||
import { autoPlayGif, displayMedia, useBlurhash } from '../initial_state';
 | 
			
		||||
import { decode } from 'blurhash';
 | 
			
		||||
 | 
			
		||||
const messages = defineMessages({
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +81,8 @@ class Item extends React.PureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  _decode () {
 | 
			
		||||
    if (!useBlurhash) return;
 | 
			
		||||
 | 
			
		||||
    const hash   = this.props.attachment.get('blurhash');
 | 
			
		||||
    const pixels = decode(hash, 32, 32);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@ import { fromJS, is } from 'immutable';
 | 
			
		|||
import { throttle } from 'lodash';
 | 
			
		||||
import classNames from 'classnames';
 | 
			
		||||
import { isFullscreen, requestFullscreen, exitFullscreen } from '../ui/util/fullscreen';
 | 
			
		||||
import { displayMedia } from '../../initial_state';
 | 
			
		||||
import { displayMedia, useBlurhash } from '../../initial_state';
 | 
			
		||||
import Icon from 'mastodon/components/icon';
 | 
			
		||||
import { decode } from 'blurhash';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -298,6 +298,8 @@ class Video extends React.PureComponent {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  _decode () {
 | 
			
		||||
    if (!useBlurhash) return;
 | 
			
		||||
 | 
			
		||||
    const hash   = this.props.blurhash;
 | 
			
		||||
    const pixels = decode(hash, 32, 32);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,5 +20,6 @@ export const mascot = getMeta('mascot');
 | 
			
		|||
export const profile_directory = getMeta('profile_directory');
 | 
			
		||||
export const isStaff = getMeta('is_staff');
 | 
			
		||||
export const forceSingleColumn = !getMeta('advanced_layout');
 | 
			
		||||
export const useBlurhash = getMeta('use_blurhash');
 | 
			
		||||
 | 
			
		||||
export default initialState;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,7 @@ class UserSettingsDecorator
 | 
			
		|||
    user.settings['aggregate_reblogs']   = aggregate_reblogs_preference if change?('setting_aggregate_reblogs')
 | 
			
		||||
    user.settings['show_application']    = show_application_preference if change?('setting_show_application')
 | 
			
		||||
    user.settings['advanced_layout']     = advanced_layout_preference if change?('setting_advanced_layout')
 | 
			
		||||
    user.settings['use_blurhash']        = use_blurhash_preference if change?('setting_use_blurhash')
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def merged_notification_emails
 | 
			
		||||
| 
						 | 
				
			
			@ -112,6 +113,10 @@ class UserSettingsDecorator
 | 
			
		|||
    boolean_cast_setting 'setting_advanced_layout'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def use_blurhash_preference
 | 
			
		||||
    boolean_cast_setting 'setting_use_blurhash'
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def boolean_cast_setting(key)
 | 
			
		||||
    ActiveModel::Type::Boolean.new.cast(settings[key])
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -106,7 +106,7 @@ class User < ApplicationRecord
 | 
			
		|||
  delegate :auto_play_gif, :default_sensitive, :unfollow_modal, :boost_modal, :delete_modal,
 | 
			
		||||
           :reduce_motion, :system_font_ui, :noindex, :theme, :display_media, :hide_network,
 | 
			
		||||
           :expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
 | 
			
		||||
           :advanced_layout, to: :settings, prefix: :setting, allow_nil: false
 | 
			
		||||
           :advanced_layout, :use_blurhash, to: :settings, prefix: :setting, allow_nil: false
 | 
			
		||||
 | 
			
		||||
  attr_reader :invite_code
 | 
			
		||||
  attr_writer :external
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,6 +32,7 @@ class InitialStateSerializer < ActiveModel::Serializer
 | 
			
		|||
      store[:expand_spoilers] = object.current_account.user.setting_expand_spoilers
 | 
			
		||||
      store[:reduce_motion]   = object.current_account.user.setting_reduce_motion
 | 
			
		||||
      store[:advanced_layout] = object.current_account.user.setting_advanced_layout
 | 
			
		||||
      store[:use_blurhash]    = object.current_account.user.setting_use_blurhash
 | 
			
		||||
      store[:is_staff]        = object.current_account.user.staff?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,9 @@
 | 
			
		|||
  .fields-group
 | 
			
		||||
    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
 | 
			
		||||
 | 
			
		||||
  .fields-group
 | 
			
		||||
    = f.input :setting_use_blurhash, as: :boolean, wrapper: :with_label
 | 
			
		||||
 | 
			
		||||
  .fields-group
 | 
			
		||||
    = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,7 @@ en:
 | 
			
		|||
        setting_hide_network: Who you follow and who follows you will not be shown on your profile
 | 
			
		||||
        setting_noindex: Affects your public profile and status pages
 | 
			
		||||
        setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
 | 
			
		||||
        setting_use_blurhash: Gradients are based on the colors of the hidden visuals but obfuscate any details
 | 
			
		||||
        username: Your username will be unique on %{domain}
 | 
			
		||||
        whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
 | 
			
		||||
      featured_tag:
 | 
			
		||||
| 
						 | 
				
			
			@ -109,6 +110,7 @@ en:
 | 
			
		|||
        setting_system_font_ui: Use system's default font
 | 
			
		||||
        setting_theme: Site theme
 | 
			
		||||
        setting_unfollow_modal: Show confirmation dialog before unfollowing someone
 | 
			
		||||
        setting_use_blurhash: Show colorful gradients for hidden media
 | 
			
		||||
        severity: Severity
 | 
			
		||||
        type: Import type
 | 
			
		||||
        username: Username
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,6 +32,7 @@ defaults: &defaults
 | 
			
		|||
  theme: 'default'
 | 
			
		||||
  aggregate_reblogs: true
 | 
			
		||||
  advanced_layout: false
 | 
			
		||||
  use_blurhash: true
 | 
			
		||||
  notification_emails:
 | 
			
		||||
    follow: false
 | 
			
		||||
    reblog: false
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue