Merge commit 'dfa5889fc0' into kb_migration

This commit is contained in:
KMY 2023-05-23 22:17:10 +09:00
commit 4a19077534
285 changed files with 938 additions and 822 deletions

View file

@ -1,5 +1,4 @@
import { render, fireEvent, screen } from '@testing-library/react';
import React from 'react';
import Column from '../column';
describe('<Column />', () => {

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';

View file

@ -1,4 +1,3 @@
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import Audio from 'mastodon/features/audio';

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { injectIntl, FormattedMessage } from 'react-intl';
@ -36,7 +36,7 @@ const mapDispatchToProps = dispatch => {
};
};
class BlockModal extends React.PureComponent {
class BlockModal extends PureComponent {
static propTypes = {
account: PropTypes.object.isRequired,

View file

@ -1,4 +1,3 @@
import React from 'react';
import { connect } from 'react-redux';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';

View file

@ -1,10 +1,10 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
const emptyComponent = () => null;
const noop = () => { };
class Bundle extends React.PureComponent {
class Bundle extends PureComponent {
static propTypes = {
fetchComponent: PropTypes.func.isRequired,

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { injectIntl, FormattedMessage } from 'react-intl';
import Column from 'mastodon/components/column';
@ -8,7 +8,7 @@ import { Link } from 'react-router-dom';
import classNames from 'classnames';
import { autoPlayGif } from 'mastodon/initial_state';
class GIF extends React.PureComponent {
class GIF extends PureComponent {
static propTypes = {
src: PropTypes.string.isRequired,
@ -59,7 +59,7 @@ class GIF extends React.PureComponent {
}
class CopyButton extends React.PureComponent {
class CopyButton extends PureComponent {
static propTypes = {
children: PropTypes.node.isRequired,
@ -92,7 +92,7 @@ class CopyButton extends React.PureComponent {
}
class BundleColumnError extends React.PureComponent {
class BundleColumnError extends PureComponent {
static propTypes = {
errorType: PropTypes.oneOf(['routing', 'network', 'error']),

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
@ -10,7 +10,7 @@ const messages = defineMessages({
close: { id: 'bundle_modal_error.close', defaultMessage: 'Close' },
});
class BundleModalError extends React.PureComponent {
class BundleModalError extends PureComponent {
static propTypes = {
onRetry: PropTypes.func.isRequired,

View file

@ -1,11 +1,11 @@
import React from 'react';
import { PureComponent } from 'react';
import ColumnHeader from './column_header';
import PropTypes from 'prop-types';
import { debounce } from 'lodash';
import { scrollTop } from '../../../scroll';
import { isMobile } from '../../../is_mobile';
export default class Column extends React.PureComponent {
export default class Column extends PureComponent {
static propTypes = {
heading: PropTypes.string,

View file

@ -1,9 +1,9 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { Icon } from 'mastodon/components/icon';
export default class ColumnHeader extends React.PureComponent {
export default class ColumnHeader extends PureComponent {
static propTypes = {
icon: PropTypes.string,

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
import { NavLink } from 'react-router-dom';
import { Icon } from 'mastodon/components/icon';

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
import Column from '../../../components/column';

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
const ColumnSubheading = ({ text }) => {

View file

@ -1,4 +1,4 @@
import React from 'react';
import { Children, cloneElement } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
@ -175,7 +175,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
);
})}
{React.Children.map(children, child => React.cloneElement(child, { multiColumn: true }))}
{Children.map(children, child => cloneElement(child, { multiColumn: true }))}
</div>
);
}

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
@ -24,7 +24,7 @@ const mapDispatchToProps = dispatch => ({
});
class CompareHistoryModal extends React.PureComponent {
class CompareHistoryModal extends PureComponent {
static propTypes = {
onClose: PropTypes.func.isRequired,
@ -65,10 +65,10 @@ class CompareHistoryModal extends React.PureComponent {
<div className='compare-history-modal__container'>
<div className='status__content'>
{currentVersion.get('spoiler_text').length > 0 && (
<React.Fragment>
<>
<div className='translate' dangerouslySetInnerHTML={spoilerContent} lang={language} />
<hr />
</React.Fragment>
</>
)}
<div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} lang={language} />

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import SearchContainer from 'mastodon/features/compose/containers/search_container';
@ -8,7 +8,7 @@ import LinkFooter from './link_footer';
import ServerBanner from 'mastodon/components/server_banner';
import { changeComposing, mountCompose, unmountCompose } from 'mastodon/actions/compose';
class ComposePanel extends React.PureComponent {
class ComposePanel extends PureComponent {
static contextTypes = {
identity: PropTypes.object.isRequired,
@ -46,17 +46,17 @@ class ComposePanel extends React.PureComponent {
<SearchContainer openInRoute />
{!signedIn && (
<React.Fragment>
<>
<ServerBanner />
<div className='flex-spacer' />
</React.Fragment>
</>
)}
{signedIn && (
<React.Fragment>
<>
<NavigationContainer onClose={this.onBlur} />
<ComposeFormContainer singleColumn />
</React.Fragment>
</>
)}
<LinkFooter />

View file

@ -1,9 +1,9 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { injectIntl, FormattedMessage } from 'react-intl';
import Button from '../../../components/button';
class ConfirmationModal extends React.PureComponent {
class ConfirmationModal extends PureComponent {
static propTypes = {
message: PropTypes.node.isRequired,

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
@ -28,7 +28,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
},
});
class DisabledAccountBanner extends React.PureComponent {
class DisabledAccountBanner extends PureComponent {
static propTypes = {
disabledAcct: PropTypes.string.isRequired,

View file

@ -1,5 +1,3 @@
import React from 'react';
const DrawerLoading = () => (
<div className='drawer'>
<div className='drawer__pager'>

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
import ImmutablePureComponent from 'react-immutable-pure-component';
import { defineMessages, FormattedMessage, injectIntl } from 'react-intl';

View file

@ -1,4 +1,3 @@
import React from 'react';
import { connect } from 'react-redux';
import { fetchStatus } from 'mastodon/actions/statuses';
import { fetchFilters, createFilter, createFilterStatus } from 'mastodon/actions/filters';

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import ImmutablePureComponent from 'react-immutable-pure-component';
@ -69,7 +69,7 @@ const removeExtraLineBreaks = str => str.replace(/\n\n/g, '******')
.replace(/\n/g, ' ')
.replace(/\*\*\*\*\*\*/g, '\n\n');
class ImageLoader extends React.PureComponent {
class ImageLoader extends PureComponent {
static propTypes = {
src: PropTypes.string.isRequired,
@ -315,7 +315,7 @@ class FocalPointModal extends ImmutablePureComponent {
{focals && <p><FormattedMessage id='upload_modal.hint' defaultMessage='Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.' /></p>}
{thumbnailable && (
<React.Fragment>
<>
<label className='setting-text-label' htmlFor='upload-modal__thumbnail'><FormattedMessage id='upload_form.thumbnail' defaultMessage='Change thumbnail' /></label>
<Button disabled={isUploadingThumbnail || !media.get('unattached')} text={intl.formatMessage(messages.chooseImage)} onClick={this.handleFileInputClick} />
@ -335,7 +335,7 @@ class FocalPointModal extends ImmutablePureComponent {
</label>
<hr className='setting-divider' />
</React.Fragment>
</>
)}
<label className='setting-text-label' htmlFor='upload-modal__description'>

View file

@ -1,4 +1,4 @@
import React from 'react';
import { Component } from 'react';
import PropTypes from 'prop-types';
import { fetchFollowRequests } from 'mastodon/actions/accounts';
import { connect } from 'react-redux';
@ -15,7 +15,7 @@ const mapStateToProps = state => ({
count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
});
class FollowRequestsColumnLink extends React.Component {
class FollowRequestsColumnLink extends Component {
static propTypes = {
dispatch: PropTypes.func.isRequired,

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import { WordmarkLogo, SymbolLogo } from 'mastodon/components/logo';
import { Link, withRouter } from 'react-router-dom';
import { FormattedMessage } from 'react-intl';
@ -22,7 +22,7 @@ const mapDispatchToProps = (dispatch) => ({
},
});
class Header extends React.PureComponent {
class Header extends PureComponent {
static contextTypes = {
identity: PropTypes.object,

View file

@ -1,6 +1,6 @@
import classNames from 'classnames';
import PropTypes from 'prop-types';
import React, { PureComponent } from 'react';
import { PureComponent } from 'react';
import { LoadingBar } from 'react-redux-loading-bar';
import ZoomableImage from './zoomable_image';

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { defineMessages, injectIntl } from 'react-intl';
@ -9,7 +9,7 @@ const messages = defineMessages({
close: { id: 'lightbox.close', defaultMessage: 'Close' },
});
class ImageModal extends React.PureComponent {
class ImageModal extends PureComponent {
static propTypes = {
src: PropTypes.string.isRequired,

View file

@ -1,5 +1,5 @@
import { connect } from 'react-redux';
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
import { Link } from 'react-router-dom';
@ -24,7 +24,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
},
});
class LinkFooter extends React.PureComponent {
class LinkFooter extends PureComponent {
static contextTypes = {
identity: PropTypes.object,

View file

@ -1,4 +1,3 @@
import React from 'react';
import PropTypes from 'prop-types';
import { createSelector } from 'reselect';
import ImmutablePropTypes from 'react-immutable-proptypes';

View file

@ -1,4 +1,3 @@
import React from 'react';
import ReactSwipeableViews from 'react-swipeable-views';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';

View file

@ -1,5 +1,3 @@
import React from 'react';
import LoadingIndicator from '../../../components/loading_indicator';
// Keep the markup in sync with <BundleModalError />

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { getScrollbarWidth } from 'mastodon/utils/scrollbar';
import Base from 'mastodon/components/modal_root';
@ -52,7 +52,7 @@ const MODAL_COMPONENTS = {
'CLOSED_REGISTRATIONS': ClosedRegistrationsModal,
};
export default class ModalRoot extends React.PureComponent {
export default class ModalRoot extends PureComponent {
static propTypes = {
type: PropTypes.string,

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
@ -43,7 +43,7 @@ const mapDispatchToProps = dispatch => {
};
};
class MuteModal extends React.PureComponent {
class MuteModal extends PureComponent {
static propTypes = {
account: PropTypes.object.isRequired,

View file

@ -1,4 +1,4 @@
import React from 'react';
import { Component } from 'react';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
import { Link } from 'react-router-dom';
@ -28,7 +28,7 @@ const messages = defineMessages({
search: { id: 'navigation_bar.search', defaultMessage: 'Search' },
});
class NavigationPanel extends React.Component {
class NavigationPanel extends Component {
static contextTypes = {
router: PropTypes.object.isRequired,
@ -51,11 +51,11 @@ class NavigationPanel extends React.Component {
</div>
{signedIn && (
<React.Fragment>
<>
<ColumnLink transparent to='/home' icon='home' text={intl.formatMessage(messages.home)} />
<ColumnLink transparent to='/notifications' icon={<NotificationsCounterIcon className='column-link__icon' />} text={intl.formatMessage(messages.notifications)} />
<FollowRequestsColumnLink />
</React.Fragment>
</>
)}
{showTrends ? (
@ -79,7 +79,7 @@ class NavigationPanel extends React.Component {
)}
{signedIn && (
<React.Fragment>
<>
<ColumnLink transparent to='/conversations' icon='at' text={intl.formatMessage(messages.direct)} />
<ColumnLink transparent to='/bookmarks' icon='bookmark' text={intl.formatMessage(messages.bookmarks)} />
<ColumnLink transparent to='/favourites' icon='star' text={intl.formatMessage(messages.favourites)} />
@ -90,7 +90,7 @@ class NavigationPanel extends React.Component {
<hr />
<ColumnLink transparent href='/settings/preferences' icon='cog' text={intl.formatMessage(messages.preferences)} />
</React.Fragment>
</>
)}
<div className='navigation-panel__legal'>

View file

@ -1,4 +1,3 @@
import React from 'react';
import { connect } from 'react-redux';
import { submitReport } from 'mastodon/actions/reports';
import { expandAccountTimeline } from 'mastodon/actions/timelines';

View file

@ -1,4 +1,4 @@
import React, { useCallback } from 'react';
import { useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import { useDispatch } from 'react-redux';
import { registrationsOpen } from 'mastodon/initial_state';

View file

@ -1,10 +1,10 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import Motion from '../util/optional_motion';
import spring from 'react-motion/lib/spring';
import { FormattedMessage } from 'react-intl';
export default class UploadArea extends React.PureComponent {
export default class UploadArea extends PureComponent {
static propTypes = {
active: PropTypes.bool,

View file

@ -1,4 +1,3 @@
import React from 'react';
import ImmutablePropTypes from 'react-immutable-proptypes';
import PropTypes from 'prop-types';
import Video from 'mastodon/features/video';

View file

@ -1,4 +1,4 @@
import React from 'react';
import { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { IconButton } from 'mastodon/components/icon_button';
import { defineMessages, injectIntl } from 'react-intl';
@ -91,7 +91,7 @@ const normalizeWheel = event => {
};
};
class ZoomableImage extends React.PureComponent {
class ZoomableImage extends PureComponent {
static propTypes = {
alt: PropTypes.string,
@ -411,7 +411,7 @@ class ZoomableImage extends React.PureComponent {
const zoomButtonTitle = this.state.zoomState === 'compress' ? intl.formatMessage(messages.compress) : intl.formatMessage(messages.expand);
return (
<React.Fragment>
<>
<IconButton
className={`media-modal__zoom-button ${zoomButtonShouldHide}`}
title={zoomButtonTitle}
@ -445,7 +445,7 @@ class ZoomableImage extends React.PureComponent {
onMouseDown={this.handleMouseDown}
/>
</div>
</React.Fragment>
</>
);
}