diff options
author | ThibG <thib@sitedethib.com> | 2019-05-29 16:33:15 +0200 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2019-05-29 17:33:15 +0300 |
commit | 3333250ede3d4b9216ea8b446a14ef4d1d79b36a (patch) | |
tree | fcac8d6dc9a76aa759a96657ec658de50a72a83a | |
parent | 32fc0777b1a9752283d60295817d1ea0a14d1382 (diff) |
Fix React warning about legacy lifecycle calls and sensitive status resetting (#10872)
-rw-r--r-- | app/javascript/mastodon/components/status.js | 13 | ||||
-rw-r--r-- | app/javascript/mastodon/features/status/index.js | 5 |
2 files changed, 12 insertions, 6 deletions
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js index 28738105a..6e944dc9e 100644 --- a/app/javascript/mastodon/components/status.js +++ b/app/javascript/mastodon/components/status.js @@ -18,7 +18,6 @@ import classNames from 'classnames'; import Icon from 'mastodon/components/icon'; import PollContainer from 'mastodon/containers/poll_container'; import { displayMedia } from '../initial_state'; -import { is } from 'immutable'; // We use the component (and not the container) since we do not want // to use the progress bar to show download progress @@ -101,6 +100,7 @@ class Status extends ImmutablePureComponent { state = { showMedia: defaultMediaVisibility(this.props.status), + statusId: undefined, }; // Track height changes we know about to compensate scrolling @@ -116,9 +116,14 @@ class Status extends ImmutablePureComponent { } } - componentWillReceiveProps (nextProps) { - if (!is(nextProps.status, this.props.status) && nextProps.status) { - this.setState({ showMedia: defaultMediaVisibility(nextProps.status) }); + static getDerivedStateFromProps(nextProps, prevState) { + if (nextProps.status && nextProps.status.get('id') !== prevState.statusId) { + return { + showMedia: defaultMediaVisibility(nextProps.status), + statusId: nextProps.status.get('id'), + }; + } else { + return null; } } diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index d8c4c50dc..981eb9d58 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -132,6 +132,7 @@ class Status extends ImmutablePureComponent { state = { fullscreen: false, showMedia: defaultMediaVisibility(this.props.status), + loadedStatusId: undefined, }; componentWillMount () { @@ -148,8 +149,8 @@ class Status extends ImmutablePureComponent { this.props.dispatch(fetchStatus(nextProps.params.statusId)); } - if (!Immutable.is(nextProps.status, this.props.status) && nextProps.status) { - this.setState({ showMedia: defaultMediaVisibility(nextProps.status) }); + if (nextProps.status && nextProps.status.get('id') !== this.state.loadedStatusId) { + this.setState({ showMedia: defaultMediaVisibility(nextProps.status), loadedStatusId: nextProps.status.get('id') }); } } |