~cytrogen/masto-fe

16b79a6237b90fd0c2550794631a7ced146b01e3 — Thibaut Girka 6 years ago bde7a41
Add options to configure filtering behavior
M app/javascript/flavours/glitch/components/status.js => app/javascript/flavours/glitch/components/status.js +5 -3
@@ 506,9 506,11 @@ class Status extends ImmutablePureComponent {
        <HotKeys handlers={minHandlers}>
          <div className='status__wrapper status__wrapper--filtered focusable' tabIndex='0' ref={this.handleRef}>
            <FormattedMessage id='status.filtered' defaultMessage='Filtered' />
            <button className='status__wrapper--filtered__button' onClick={this.handleUnfilterClick}>
              <FormattedMessage id='status.show_filter_reason' defaultMessage='Show why' />
            </button>
            {settings.get('filtering_behavior') === 'hide' && (
              <button className='status__wrapper--filtered__button' onClick={this.handleUnfilterClick}>
                <FormattedMessage id='status.show_filter_reason' defaultMessage='Show why' />
              </button>
            )}
          </div>
        </HotKeys>
      );

M app/javascript/flavours/glitch/features/local_settings/navigation/index.js => app/javascript/flavours/glitch/features/local_settings/navigation/index.js +14 -6
@@ 13,6 13,7 @@ const messages = defineMessages({
  general: {  id: 'settings.general', defaultMessage: 'General' },
  compose: {  id: 'settings.compose_box_opts', defaultMessage: 'Compose box' },
  content_warnings: { id: 'settings.content_warnings', defaultMessage: 'Content Warnings' },
  filters: { id: 'settings.filters', defaultMessage: 'Filters' },
  collapsed: { id: 'settings.collapsed_statuses', defaultMessage: 'Collapsed toots' },
  media: { id: 'settings.media', defaultMessage: 'Media' },
  preferences: { id: 'settings.preferences', defaultMessage: 'Preferences' },


@@ 60,27 61,34 @@ export default class LocalSettingsNavigation extends React.PureComponent {
          active={index === 3}
          index={3}
          onNavigate={onNavigate}
          icon='angle-double-up'
          title={intl.formatMessage(messages.collapsed)}
          icon='filter'
          title={intl.formatMessage(messages.filters)}
        />
        <LocalSettingsNavigationItem
          active={index === 4}
          index={4}
          onNavigate={onNavigate}
          icon='angle-double-up'
          title={intl.formatMessage(messages.collapsed)}
        />
        <LocalSettingsNavigationItem
          active={index === 5}
          index={5}
          onNavigate={onNavigate}
          icon='image'
          title={intl.formatMessage(messages.media)}
        />
        <LocalSettingsNavigationItem
          active={index === 5}
          active={index === 6}
          href={ preferencesLink }
          index={5}
          index={6}
          icon='cog'
          title={intl.formatMessage(messages.preferences)}
        />
        <LocalSettingsNavigationItem
          active={index === 6}
          active={index === 7}
          className='close'
          index={6}
          index={7}
          onNavigate={onClose}
          icon='times'
          title={intl.formatMessage(messages.close)}

M app/javascript/flavours/glitch/features/local_settings/page/index.js => app/javascript/flavours/glitch/features/local_settings/page/index.js +23 -0
@@ 21,6 21,10 @@ const messages = defineMessages({
  side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' },
  side_arm_restrict: { id: 'settings.side_arm_reply_mode.restrict', defaultMessage: 'Restrict privacy setting to that of the toot being replied to' },
  regexp: { id: 'settings.content_warnings.regexp', defaultMessage: 'Regular expression' },
  filters_drop: { id: 'settings.filtering_behavior.drop', defaultMessage: 'Hide filtered toots completely' },
  filters_upstream: { id: 'settings.filtering_behavior.upstream', defaultMessage: 'Show "filtered" like vanilla Mastodon' },
  filters_hide: { id: 'settings.filtering_behavior.hide', defaultMessage: 'Show "filtered" and add a button to display why' },
  filters_cw: { id: 'settings.filtering_behavior.cw', defaultMessage: 'Still display the post, and add filtered words to content warning' },
});

@injectIntl


@@ 223,6 227,25 @@ export default class LocalSettingsPage extends React.PureComponent {
        </LocalSettingsPageItem>
      </div>
    ),
    ({ intl, onChange, settings }) => (
      <div className='glitch local-settings__page filters'>
        <h1><FormattedMessage id='settings.filters' defaultMessage='Filters' /></h1>
        <LocalSettingsPageItem
          settings={settings}
          item={['filtering_behavior']}
          id='mastodon-settings--filters-behavior'
          onChange={onChange}
          options={[
            { value: 'drop', message: intl.formatMessage(messages.filters_drop) },
            { value: 'upstream', message: intl.formatMessage(messages.filters_upstream) },
            { value: 'hide', message: intl.formatMessage(messages.filters_hide) },
            { value: 'content_warning', message: intl.formatMessage(messages.filters_cw) }
          ]}
        >
          <FormattedMessage id='settings.filtering_behavior' defaultMessage='Filtering behavior' />
        </LocalSettingsPageItem>
      </div>
    ),
    ({ onChange, settings }) => (
      <div className='glitch local-settings__page collapsed'>
        <h1><FormattedMessage id='settings.collapsed_statuses' defaultMessage='Collapsed toots' /></h1>

M app/javascript/flavours/glitch/reducers/local_settings.js => app/javascript/flavours/glitch/reducers/local_settings.js +1 -0
@@ 21,6 21,7 @@ const initialState = ImmutableMap({
  inline_preview_cards: true,
  hicolor_privacy_icons: false,
  show_content_type_choice: false,
  filtering_behavior: 'hide',
  content_warnings : ImmutableMap({
    auto_unfold : false,
    filter      : null,