Add setting to disable hover cards (#30931)
Co-authored-by: Eugen Rochko <eugen@zeonfederated.com>
This commit is contained in:
		@@ -562,7 +562,7 @@ class Status extends ImmutablePureComponent {
 | 
			
		||||
                <RelativeTimestamp timestamp={status.get('created_at')} />{status.get('edited_at') && <abbr title={intl.formatMessage(messages.edited, { date: intl.formatDate(status.get('edited_at'), { year: 'numeric', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }) })}> *</abbr>}
 | 
			
		||||
              </a>
 | 
			
		||||
 | 
			
		||||
              <a onClick={this.handleAccountClick} href={`/@${status.getIn(['account', 'acct'])}`} data-hover-card-account={status.getIn(['account', 'id'])} className='status__display-name' target='_blank' rel='noopener noreferrer'>
 | 
			
		||||
              <a onClick={this.handleAccountClick} href={`/@${status.getIn(['account', 'acct'])}`} title={status.getIn(['account', 'acct'])} data-hover-card-account={status.getIn(['account', 'id'])} className='status__display-name' target='_blank' rel='noopener noreferrer'>
 | 
			
		||||
                <div className='status__avatar'>
 | 
			
		||||
                  {statusAvatar}
 | 
			
		||||
                </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,7 @@ class StatusContent extends PureComponent {
 | 
			
		||||
 | 
			
		||||
      if (mention) {
 | 
			
		||||
        link.addEventListener('click', this.onMentionClick.bind(this, mention), false);
 | 
			
		||||
        link.removeAttribute('title');
 | 
			
		||||
        link.setAttribute('title', `@${mention.get('acct')}`);
 | 
			
		||||
        link.setAttribute('href', `/@${mention.get('acct')}`);
 | 
			
		||||
        link.setAttribute('data-hover-card-account', mention.get('id'));
 | 
			
		||||
      } else if (link.textContent[0] === '#' || (link.previousSibling && link.previousSibling.textContent && link.previousSibling.textContent[link.previousSibling.textContent.length - 1] === '#')) {
 | 
			
		||||
 
 | 
			
		||||
@@ -435,7 +435,7 @@ class Notification extends ImmutablePureComponent {
 | 
			
		||||
 | 
			
		||||
    const targetAccount = report.get('target_account');
 | 
			
		||||
    const targetDisplayNameHtml = { __html: targetAccount.get('display_name_html') };
 | 
			
		||||
    const targetLink = <bdi><Link className='notification__display-name' data-hover-card-account={targetAccount.get('id')} to={`/@${targetAccount.get('acct')}`} dangerouslySetInnerHTML={targetDisplayNameHtml} /></bdi>;
 | 
			
		||||
    const targetLink = <bdi><Link className='notification__display-name' title={targetAccount.get('acct')} data-hover-card-account={targetAccount.get('id')} to={`/@${targetAccount.get('acct')}`} dangerouslySetInnerHTML={targetDisplayNameHtml} /></bdi>;
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <HotKeys handlers={this.getHandlers()}>
 | 
			
		||||
@@ -458,7 +458,7 @@ class Notification extends ImmutablePureComponent {
 | 
			
		||||
    const { notification } = this.props;
 | 
			
		||||
    const account          = notification.get('account');
 | 
			
		||||
    const displayNameHtml  = { __html: account.get('display_name_html') };
 | 
			
		||||
    const link             = <bdi><Link className='notification__display-name' href={`/@${account.get('acct')}`} data-hover-card-account={account.get('id')} to={`/@${account.get('acct')}`} dangerouslySetInnerHTML={displayNameHtml} /></bdi>;
 | 
			
		||||
    const link             = <bdi><Link className='notification__display-name' href={`/@${account.get('acct')}`} title={account.get('acct')} data-hover-card-account={account.get('id')} to={`/@${account.get('acct')}`} dangerouslySetInnerHTML={displayNameHtml} /></bdi>;
 | 
			
		||||
 | 
			
		||||
    switch(notification.get('type')) {
 | 
			
		||||
    case 'follow':
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@ import { clearHeight } from '../../actions/height_cache';
 | 
			
		||||
import { expandNotifications } from '../../actions/notifications';
 | 
			
		||||
import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';
 | 
			
		||||
import { expandHomeTimeline } from '../../actions/timelines';
 | 
			
		||||
import initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding } from '../../initial_state';
 | 
			
		||||
import initialState, { me, owner, singleUserMode, trendsEnabled, trendsAsLanding, disableHoverCards } from '../../initial_state';
 | 
			
		||||
 | 
			
		||||
import BundleColumnError from './components/bundle_column_error';
 | 
			
		||||
import Header from './components/header';
 | 
			
		||||
@@ -588,7 +588,7 @@ class UI extends PureComponent {
 | 
			
		||||
 | 
			
		||||
          {layout !== 'mobile' && <PictureInPicture />}
 | 
			
		||||
          <NotificationsContainer />
 | 
			
		||||
          <HoverCardController />
 | 
			
		||||
          {!disableHoverCards && <HoverCardController />}
 | 
			
		||||
          <LoadingBarContainer className='loading-bar' />
 | 
			
		||||
          <ModalContainer />
 | 
			
		||||
          <UploadArea active={draggingOver} onClose={this.closeUploadModal} />
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@
 | 
			
		||||
 * @property {boolean=} boost_modal
 | 
			
		||||
 * @property {boolean=} delete_modal
 | 
			
		||||
 * @property {boolean=} disable_swiping
 | 
			
		||||
 * @property {boolean=} disable_hover_cards
 | 
			
		||||
 * @property {string=} disabled_account_id
 | 
			
		||||
 * @property {string} display_media
 | 
			
		||||
 * @property {string} domain
 | 
			
		||||
@@ -86,6 +87,7 @@ export const autoPlayGif = getMeta('auto_play_gif');
 | 
			
		||||
export const boostModal = getMeta('boost_modal');
 | 
			
		||||
export const deleteModal = getMeta('delete_modal');
 | 
			
		||||
export const disableSwiping = getMeta('disable_swiping');
 | 
			
		||||
export const disableHoverCards = getMeta('disable_hover_cards');
 | 
			
		||||
export const disabledAccountId = getMeta('disabled_account_id');
 | 
			
		||||
export const displayMedia = getMeta('display_media');
 | 
			
		||||
export const domain = getMeta('domain');
 | 
			
		||||
 
 | 
			
		||||
@@ -91,6 +91,10 @@ module User::HasSettings
 | 
			
		||||
    settings['web.disable_swiping']
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def setting_disable_hover_cards
 | 
			
		||||
    settings['web.disable_hover_cards']
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def setting_always_send_emails
 | 
			
		||||
    settings['always_send_emails']
 | 
			
		||||
  end
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@ class UserSettings
 | 
			
		||||
    setting :use_pending_items, default: false
 | 
			
		||||
    setting :use_system_font, default: false
 | 
			
		||||
    setting :disable_swiping, default: false
 | 
			
		||||
    setting :disable_hover_cards, default: false
 | 
			
		||||
    setting :delete_modal, default: true
 | 
			
		||||
    setting :reblog_modal, default: false
 | 
			
		||||
    setting :reduce_motion, default: false
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ class InitialStateSerializer < ActiveModel::Serializer
 | 
			
		||||
      store[:expand_spoilers]   = object_account_user.setting_expand_spoilers
 | 
			
		||||
      store[:reduce_motion]     = object_account_user.setting_reduce_motion
 | 
			
		||||
      store[:disable_swiping]   = object_account_user.setting_disable_swiping
 | 
			
		||||
      store[:disable_hover_cards] = object_account_user.setting_disable_hover_cards
 | 
			
		||||
      store[:advanced_layout]   = object_account_user.setting_advanced_layout
 | 
			
		||||
      store[:use_blurhash]      = object_account_user.setting_use_blurhash
 | 
			
		||||
      store[:use_pending_items] = object_account_user.setting_use_pending_items
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,7 @@
 | 
			
		||||
      = ff.input :'web.auto_play', wrapper: :with_label, recommended: true, label: I18n.t('simple_form.labels.defaults.setting_auto_play_gif')
 | 
			
		||||
      = ff.input :'web.reduce_motion', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_reduce_motion')
 | 
			
		||||
      = ff.input :'web.disable_swiping', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_swiping')
 | 
			
		||||
      = ff.input :'web.disable_hover_cards', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_disable_hover_cards')
 | 
			
		||||
      = ff.input :'web.use_system_font', wrapper: :with_label, label: I18n.t('simple_form.labels.defaults.setting_system_font_ui')
 | 
			
		||||
 | 
			
		||||
    %h4= t 'appearance.discovery'
 | 
			
		||||
 
 | 
			
		||||
@@ -211,6 +211,7 @@ en:
 | 
			
		||||
        setting_default_privacy: Posting privacy
 | 
			
		||||
        setting_default_sensitive: Always mark media as sensitive
 | 
			
		||||
        setting_delete_modal: Show confirmation dialog before deleting a post
 | 
			
		||||
        setting_disable_hover_cards: Disable profile preview on hover
 | 
			
		||||
        setting_disable_swiping: Disable swiping motions
 | 
			
		||||
        setting_display_media: Media display
 | 
			
		||||
        setting_display_media_default: Default
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user