|
|
|
@ -41,6 +41,7 @@ class StatusUnextended extends ImmutablePureComponent {
|
|
|
|
|
boostModal: PropTypes.bool,
|
|
|
|
|
autoPlayGif: PropTypes.bool,
|
|
|
|
|
muted: PropTypes.bool,
|
|
|
|
|
collapse: PropTypes.bool,
|
|
|
|
|
intersectionObserverWrapper: PropTypes.object,
|
|
|
|
|
intl: PropTypes.object.isRequired,
|
|
|
|
|
};
|
|
|
|
@ -62,16 +63,20 @@ class StatusUnextended extends ImmutablePureComponent {
|
|
|
|
|
'boostModal',
|
|
|
|
|
'autoPlayGif',
|
|
|
|
|
'muted',
|
|
|
|
|
'collapse',
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
updateOnStates = ['isExpanded']
|
|
|
|
|
updateOnStates = [
|
|
|
|
|
'isExpanded',
|
|
|
|
|
'isCollapsed',
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
componentWillReceiveProps (nextProps) {
|
|
|
|
|
if (nextProps.collapse !== this.props.collapse && nextProps.collapse !== undefined) this.setState({ isCollapsed: !!nextProps.collapse });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
shouldComponentUpdate (nextProps, nextState) {
|
|
|
|
|
if (nextState.isCollapsed !== this.state.isCollapsed) {
|
|
|
|
|
// If the collapsed state of the element has changed then we definitely
|
|
|
|
|
// need to re-update.
|
|
|
|
|
return true;
|
|
|
|
|
} else if (!nextState.isIntersecting && nextState.isHidden) {
|
|
|
|
|
if (!nextState.isIntersecting && nextState.isHidden) {
|
|
|
|
|
// It's only if we're not intersecting (i.e. offscreen) and isHidden is true
|
|
|
|
|
// that either "isIntersecting" or "isHidden" matter, and then they're
|
|
|
|
|
// the only things that matter.
|
|
|
|
@ -92,6 +97,9 @@ class StatusUnextended extends ImmutablePureComponent {
|
|
|
|
|
componentDidMount () {
|
|
|
|
|
const node = this.node;
|
|
|
|
|
|
|
|
|
|
if (this.props.collapse !== undefined) this.setState({ isCollapsed: !!this.props.collapse });
|
|
|
|
|
else if (node.clientHeight > 400 && !(this.props.status.get('reblog', null) !== null && typeof this.props.status.get('reblog') === 'object')) this.setState({ isCollapsed: true });
|
|
|
|
|
|
|
|
|
|
if (!this.props.intersectionObserverWrapper) {
|
|
|
|
|
// TODO: enable IntersectionObserver optimization for notification statuses.
|
|
|
|
|
// These are managed in notifications/index.js rather than status_list.js
|
|
|
|
@ -103,8 +111,6 @@ class StatusUnextended extends ImmutablePureComponent {
|
|
|
|
|
this.handleIntersection
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (node.clientHeight > 400 && !(this.props.status.get('reblog', null) !== null && typeof this.props.status.get('reblog') === 'object')) this.setState({ isCollapsed: true });
|
|
|
|
|
|
|
|
|
|
this.componentMounted = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|