diff --git a/.eslintrc.js b/.eslintrc.js
index 70506f60c48521..3bac9ed694ee11 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -236,7 +236,7 @@ module.exports = {
},
// Common React utilities
{
- pattern: '{classnames,react-helmet,react-router,react-router-dom}',
+ pattern: '{classnames,react-helmet,react-router-dom}',
group: 'external',
position: 'before',
},
diff --git a/app/javascript/mastodon/components/column_back_button.jsx b/app/javascript/mastodon/components/column_back_button.jsx
index b47718ed8924bd..74a03b093ab8cc 100644
--- a/app/javascript/mastodon/components/column_back_button.jsx
+++ b/app/javascript/mastodon/components/column_back_button.jsx
@@ -4,28 +4,29 @@ import { createPortal } from 'react-dom';
import { FormattedMessage } from 'react-intl';
-import { withRouter } from 'react-router-dom';
-
import { Icon } from 'mastodon/components/icon';
-import { WithRouterPropTypes } from 'mastodon/utils/react_router';
-class ColumnBackButton extends PureComponent {
+export default class ColumnBackButton extends PureComponent {
+
+ static contextTypes = {
+ router: PropTypes.object,
+ };
static propTypes = {
multiColumn: PropTypes.bool,
onClick: PropTypes.func,
- ...WithRouterPropTypes,
};
handleClick = () => {
- const { onClick, history } = this.props;
+ const { router } = this.context;
+ const { onClick } = this.props;
if (onClick) {
onClick();
- } else if (history.location?.state?.fromMastodon) {
- history.goBack();
+ } else if (router.history.location?.state?.fromMastodon) {
+ router.history.goBack();
} else {
- history.push('/');
+ router.history.push('/');
}
};
@@ -59,5 +60,3 @@ class ColumnBackButton extends PureComponent {
}
}
-
-export default withRouter(ColumnBackButton);
diff --git a/app/javascript/mastodon/components/column_header.jsx b/app/javascript/mastodon/components/column_header.jsx
index 2896a501be7d70..9d29bbae0346be 100644
--- a/app/javascript/mastodon/components/column_header.jsx
+++ b/app/javascript/mastodon/components/column_header.jsx
@@ -5,10 +5,8 @@ import { createPortal } from 'react-dom';
import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
import classNames from 'classnames';
-import { withRouter } from 'react-router-dom';
import { Icon } from 'mastodon/components/icon';
-import { WithRouterPropTypes } from 'mastodon/utils/react_router';
const messages = defineMessages({
show: { id: 'column_header.show_settings', defaultMessage: 'Show settings' },
@@ -20,6 +18,7 @@ const messages = defineMessages({
class ColumnHeader extends PureComponent {
static contextTypes = {
+ router: PropTypes.object,
identity: PropTypes.object,
};
@@ -39,7 +38,6 @@ class ColumnHeader extends PureComponent {
onClick: PropTypes.func,
appendContent: PropTypes.node,
collapseIssues: PropTypes.bool,
- ...WithRouterPropTypes,
};
state = {
@@ -65,12 +63,12 @@ class ColumnHeader extends PureComponent {
};
handleBackClick = () => {
- const { history } = this.props;
+ const { router } = this.context;
- if (history.location?.state?.fromMastodon) {
- history.goBack();
+ if (router.history.location?.state?.fromMastodon) {
+ router.history.goBack();
} else {
- history.push('/');
+ router.history.push('/');
}
};
@@ -80,14 +78,15 @@ class ColumnHeader extends PureComponent {
handlePin = () => {
if (!this.props.pinned) {
- this.props.history.replace('/');
+ this.context.router.history.replace('/');
}
this.props.onPin();
};
render () {
- const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, placeholder, appendContent, collapseIssues, history } = this.props;
+ const { router } = this.context;
+ const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, placeholder, appendContent, collapseIssues } = this.props;
const { collapsed, animating } = this.state;
const wrapperClassName = classNames('column-header__wrapper', {
@@ -130,7 +129,7 @@ class ColumnHeader extends PureComponent {
pinButton = ;
}
- if (!pinned && ((multiColumn && history.location?.state?.fromMastodon) || showBackButton)) {
+ if (!pinned && ((multiColumn && router.history.location?.state?.fromMastodon) || showBackButton)) {
backButton = (