~cytrogen/masto-fe

774e1189d26fffd914107a4236f6287043c988f8 — Renaud Chaput 2 years ago c310374
Change `eslint` config to autofix missing comma and indentation in JS files (#26711)

M .eslintrc.js => .eslintrc.js +2 -1
@@ 9,7 9,6 @@ module.exports = {
    'plugin:import/recommended',
    'plugin:promise/recommended',
    'plugin:jsdoc/recommended',
    'plugin:prettier/recommended',
  ],

  env: {


@@ 63,7 62,9 @@ module.exports = {
    'consistent-return': 'error',
    'dot-notation': 'error',
    eqeqeq: ['error', 'always', { 'null': 'ignore' }],
    'indent': ['error', 2],
    'jsx-quotes': ['error', 'prefer-single'],
    'semi': ['error', 'always'],
    'no-case-declarations': 'off',
    'no-catch-shadow': 'error',
    'no-console': [

M app/javascript/mastodon/actions/alerts.js => app/javascript/mastodon/actions/alerts.js +1 -1
@@ 56,4 56,4 @@ export const showAlertForError = (error, skipNotFound = false) => {
    title: messages.unexpectedTitle,
    message: messages.unexpectedMessage,
  });
}
};

M app/javascript/mastodon/actions/importer/normalizer.js => app/javascript/mastodon/actions/importer/normalizer.js +3 -3
@@ 104,7 104,7 @@ export function normalizeStatus(status, normalOldStatus) {
      normalStatus.media_attachments.forEach(item => {
        const oldItem = list.find(i => i.get('id') === item.id);
        if (oldItem && oldItem.get('description') === item.description) {
          item.translation = oldItem.get('translation')
          item.translation = oldItem.get('translation');
        }
      });
    }


@@ 137,13 137,13 @@ export function normalizePoll(poll, normalOldPoll) {
      ...option,
      voted: poll.own_votes && poll.own_votes.includes(index),
      titleHtml: emojify(escapeTextContentForBrowser(option.title), emojiMap),
    }
    };

    if (normalOldPoll && normalOldPoll.getIn(['options', index, 'title']) === option.title) {
      normalOption.translation = normalOldPoll.getIn(['options', index, 'translation']);
    }

    return normalOption
    return normalOption;
  });

  return normalPoll;

M app/javascript/mastodon/components/column.jsx => app/javascript/mastodon/components/column.jsx +1 -1
@@ 22,7 22,7 @@ export default class Column extends PureComponent {
      scrollable = document.scrollingElement;
    } else {
      scrollable = this.node.querySelector('.scrollable');
   }
    }

    if (!scrollable) {
      return;

M app/javascript/mastodon/components/poll.jsx => app/javascript/mastodon/components/poll.jsx +1 -1
@@ 132,7 132,7 @@ class Poll extends ImmutablePureComponent {

  handleReveal = () => {
    this.setState({ revealed: true });
  }
  };

  renderOption (option, optionIndex, showResults) {
    const { poll, lang, disabled, intl } = this.props;

M app/javascript/mastodon/components/status.jsx => app/javascript/mastodon/components/status.jsx +1 -1
@@ 199,7 199,7 @@ class Status extends ImmutablePureComponent {
    } else if (attachments.getIn([0, 'type']) === 'audio') {
      return '16 / 9';
    } else {
      return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2'
      return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2';
    }
  }


M app/javascript/mastodon/features/compose/components/navigation_bar.jsx => app/javascript/mastodon/features/compose/components/navigation_bar.jsx +1 -1
@@ 20,7 20,7 @@ export default class NavigationBar extends ImmutablePureComponent {
  };

  render () {
    const username = this.props.account.get('acct')
    const username = this.props.account.get('acct');
    return (
      <div className='navigation-bar'>
        <Link to={`/@${username}`}>

M app/javascript/mastodon/features/compose/components/search.jsx => app/javascript/mastodon/features/compose/components/search.jsx +8 -8
@@ 57,14 57,14 @@ class Search extends PureComponent {
  };

  defaultOptions = [
    { label: <><mark>has:</mark> <FormattedList type='disjunction' value={['media', 'poll', 'embed']} /></>, action: e => { e.preventDefault(); this._insertText('has:') } },
    { label: <><mark>is:</mark> <FormattedList type='disjunction' value={['reply', 'sensitive']} /></>, action: e => { e.preventDefault(); this._insertText('is:') } },
    { label: <><mark>language:</mark> <FormattedMessage id='search_popout.language_code' defaultMessage='ISO language code' /></>, action: e => { e.preventDefault(); this._insertText('language:') } },
    { label: <><mark>from:</mark> <FormattedMessage id='search_popout.user' defaultMessage='user' /></>, action: e => { e.preventDefault(); this._insertText('from:') } },
    { label: <><mark>before:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('before:') } },
    { label: <><mark>during:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('during:') } },
    { label: <><mark>after:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('after:') } },
    { label: <><mark>in:</mark> <FormattedList type='disjunction' value={['all', 'library']} /></>, action: e => { e.preventDefault(); this._insertText('in:') } }
    { label: <><mark>has:</mark> <FormattedList type='disjunction' value={['media', 'poll', 'embed']} /></>, action: e => { e.preventDefault(); this._insertText('has:'); } },
    { label: <><mark>is:</mark> <FormattedList type='disjunction' value={['reply', 'sensitive']} /></>, action: e => { e.preventDefault(); this._insertText('is:'); } },
    { label: <><mark>language:</mark> <FormattedMessage id='search_popout.language_code' defaultMessage='ISO language code' /></>, action: e => { e.preventDefault(); this._insertText('language:'); } },
    { label: <><mark>from:</mark> <FormattedMessage id='search_popout.user' defaultMessage='user' /></>, action: e => { e.preventDefault(); this._insertText('from:'); } },
    { label: <><mark>before:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('before:'); } },
    { label: <><mark>during:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('during:'); } },
    { label: <><mark>after:</mark> <FormattedMessage id='search_popout.specific_date' defaultMessage='specific date' /></>, action: e => { e.preventDefault(); this._insertText('after:'); } },
    { label: <><mark>in:</mark> <FormattedList type='disjunction' value={['all', 'library']} /></>, action: e => { e.preventDefault(); this._insertText('in:'); } }
  ];

  setRef = c => {

M app/javascript/mastodon/features/explore/results.jsx => app/javascript/mastodon/features/explore/results.jsx +3 -3
@@ 80,7 80,7 @@ class Results extends PureComponent {
    }

    return null;
  };
  }

  handleSelectAll = () => {
    const { submittedType, dispatch } = this.props;


@@ 116,7 116,7 @@ class Results extends PureComponent {
    }

    this.setState({ type: 'hashtags' });
  }
  };

  handleSelectStatuses = () => {
    const { submittedType, dispatch } = this.props;


@@ 128,7 128,7 @@ class Results extends PureComponent {
    }

    this.setState({ type: 'statuses' });
  }
  };

  handleLoadMoreAccounts = () => this._loadMore('accounts');
  handleLoadMoreStatuses = () => this._loadMore('statuses');

M app/javascript/mastodon/features/firehose/index.jsx => app/javascript/mastodon/features/firehose/index.jsx +1 -1
@@ 199,7 199,7 @@ const Firehose = ({ feedType, multiColumn }) => {
      </Helmet>
    </Column>
  );
}
};

Firehose.propTypes = {
  multiColumn: PropTypes.bool,

M app/javascript/mastodon/features/interaction_modal/index.jsx => app/javascript/mastodon/features/interaction_modal/index.jsx +4 -4
@@ 27,9 27,9 @@ const mapStateToProps = (state, { accountId }) => ({
const mapDispatchToProps = (dispatch) => ({
  onSignupClick() {
    dispatch(closeModal({
        modalType: undefined,
        ignoreFocus: false,
      }));
      modalType: undefined,
      ignoreFocus: false,
    }));
    dispatch(openModal({ modalType: 'CLOSED_REGISTRATIONS' }));
  },
});


@@ 187,7 187,7 @@ class LoginForm extends React.PureComponent {

  setIFrameRef = (iframe) => {
    this.iframeRef = iframe;
  }
  };

  handleFocus = () => {
    this.setState({ expanded: true });

M app/javascript/mastodon/features/reblogs/index.jsx => app/javascript/mastodon/features/reblogs/index.jsx +1 -1
@@ 45,7 45,7 @@ class Reblogs extends ImmutablePureComponent {
    if (!this.props.accountIds) {
      this.props.dispatch(fetchReblogs(this.props.params.statusId));
    }
  };
  }

  handleRefresh = () => {
    this.props.dispatch(fetchReblogs(this.props.params.statusId));

M app/javascript/mastodon/features/report/comment.jsx => app/javascript/mastodon/features/report/comment.jsx +1 -1
@@ 104,7 104,7 @@ const Comment = ({ comment, domain, statusIds, isRemote, isSubmitting, selectedD
      </div>
    </>
  );
}
};

Comment.propTypes = {
  comment: PropTypes.string.isRequired,

M app/javascript/mastodon/features/status/components/detailed_status.jsx => app/javascript/mastodon/features/status/components/detailed_status.jsx +1 -1
@@ 132,7 132,7 @@ class DetailedStatus extends ImmutablePureComponent {
    } else if (attachments.getIn([0, 'type']) === 'audio') {
      return '16 / 9';
    } else {
      return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2'
      return (attachments.size === 1 && attachments.getIn([0, 'meta', 'small', 'aspect'])) ? attachments.getIn([0, 'meta', 'small', 'aspect']) : '3 / 2';
    }
  }


M app/javascript/mastodon/features/ui/components/header.jsx => app/javascript/mastodon/features/ui/components/header.jsx +2 -2
@@ 76,8 76,8 @@ class Header extends PureComponent {

      if (sso_redirect) {
        content = (
            <a href={sso_redirect} data-method='post' className='button button--block button-tertiary'><FormattedMessage id='sign_in_banner.sso_redirect' defaultMessage='Login or Register' /></a>
        )
          <a href={sso_redirect} data-method='post' className='button button--block button-tertiary'><FormattedMessage id='sign_in_banner.sso_redirect' defaultMessage='Login or Register' /></a>
        );
      } else {
        let signupButton;


M app/javascript/mastodon/features/ui/components/modal_root.jsx => app/javascript/mastodon/features/ui/components/modal_root.jsx +1 -1
@@ 117,7 117,7 @@ export default class ModalRoot extends PureComponent {
            <BundleContainer fetchComponent={MODAL_COMPONENTS[type]} loading={this.renderLoading(type)} error={this.renderError} renderDelay={200}>
              {(SpecificComponent) => {
                const ref = typeof SpecificComponent !== 'function' ? this.setModalRef : undefined;
                return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={ref} />
                return <SpecificComponent {...props} onChangeBackgroundColor={this.setBackgroundColor} onClose={this.handleClose} ref={ref} />;
              }}
            </BundleContainer>


M app/javascript/mastodon/features/ui/components/sign_in_banner.jsx => app/javascript/mastodon/features/ui/components/sign_in_banner.jsx +1 -1
@@ 25,7 25,7 @@ const SignInBanner = () => {
        <p><FormattedMessage id='sign_in_banner.text' defaultMessage='Login to follow profiles or hashtags, favorite, share and reply to posts. You can also interact from your account on a different server.' /></p>
        <a href={sso_redirect} data-method='post' className='button button--block button-tertiary'><FormattedMessage id='sign_in_banner.sso_redirect' defaultMessage='Login or Register' /></a>
      </div>
    )
    );
  }

  if (registrationsOpen) {

M app/javascript/packs/application.js => app/javascript/packs/application.js +1 -1
@@ 1,5 1,5 @@
import './public-path';
import main from "mastodon/main"
import main from "mastodon/main";

import { start } from '../mastodon/common';
import { loadLocale } from '../mastodon/locales';

M streaming/index.js => streaming/index.js +5 -5
@@ 256,7 256,7 @@ const startServer = async () => {
  CHANNEL_NAMES.forEach(( channel ) => {
    connectedChannels.set({ type: 'websocket', channel }, 0);
    connectedChannels.set({ type: 'eventsource', channel }, 0);
  })
  });

  // Prime the counters so that we don't loose metrics between restarts.
  // Unfortunately counters don't support the set() API, so instead I'm using


@@ 1296,7 1296,7 @@ const startServer = async () => {
      log.verbose(request.requestId, 'Subscription error:', err.toString());
      socket.send(JSON.stringify({ error: err.toString() }));
    });
  }
  };


  const removeSubscription = (subscriptions, channelIds, request) => {


@@ 1316,7 1316,7 @@ const startServer = async () => {
    subscription.stopHeartbeat();

    delete subscriptions[channelIds.join(';')];
  }
  };

  /**
   * @param {WebSocketSession} session


@@ 1336,7 1336,7 @@ const startServer = async () => {
        socket.send(JSON.stringify({ error: "Error unsubscribing from channel" }));
      }
    });
  }
  };

  /**
   * @param {WebSocketSession} session


@@ 1414,7 1414,7 @@ const startServer = async () => {
      const subscriptions = Object.keys(session.subscriptions);

      subscriptions.forEach(channelIds => {
        removeSubscription(session.subscriptions, channelIds.split(';'), req)
        removeSubscription(session.subscriptions, channelIds.split(';'), req);
      });

      // Decrement the metrics for connected clients: