|
|
|
@ -91,26 +91,26 @@ export default class Status extends ImmutablePureComponent { |
|
|
|
|
fullscreen: false, |
|
|
|
|
isExpanded: undefined, |
|
|
|
|
threadExpanded: undefined, |
|
|
|
|
statusId: undefined, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
componentWillMount () { |
|
|
|
|
this.props.dispatch(fetchStatus(this.props.params.statusId)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
componentDidMount () { |
|
|
|
|
attachFullscreenListener(this.onFullScreenChange); |
|
|
|
|
this.props.dispatch(fetchStatus(this.props.params.statusId)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
componentWillReceiveProps (nextProps) { |
|
|
|
|
if (this.state.isExpanded === undefined) { |
|
|
|
|
const isExpanded = autoUnfoldCW(nextProps.settings, nextProps.status); |
|
|
|
|
if (isExpanded !== undefined) this.setState({ isExpanded: isExpanded }); |
|
|
|
|
} |
|
|
|
|
if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) { |
|
|
|
|
this._scrolledIntoView = false; |
|
|
|
|
this.props.dispatch(fetchStatus(nextProps.params.statusId)); |
|
|
|
|
this.setState({ isExpanded: autoUnfoldCW(nextProps.settings, nextProps.status), threadExpanded: undefined }); |
|
|
|
|
static getDerivedStateFromProps(props, state) { |
|
|
|
|
if (state.statusId === props.params.statusId || !props.params.statusId) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
props.dispatch(fetchStatus(props.params.statusId)); |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
threadExpanded: undefined, |
|
|
|
|
isExpanded: autoUnfoldCW(props.settings, props.status), |
|
|
|
|
statusId: props.params.statusId, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
handleExpandedToggle = () => { |
|
|
|
@ -338,20 +338,17 @@ export default class Status extends ImmutablePureComponent { |
|
|
|
|
this.node = c; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
componentDidUpdate () { |
|
|
|
|
if (this._scrolledIntoView) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
componentDidUpdate (prevProps) { |
|
|
|
|
if (this.props.params.statusId !== prevProps.params.statusId && this.props.params.statusId) { |
|
|
|
|
const { status, ancestorsIds } = this.props; |
|
|
|
|
|
|
|
|
|
const { status, ancestorsIds } = this.props; |
|
|
|
|
if (status && ancestorsIds && ancestorsIds.size > 0) { |
|
|
|
|
const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1]; |
|
|
|
|
|
|
|
|
|
if (status && ancestorsIds && ancestorsIds.size > 0) { |
|
|
|
|
const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1]; |
|
|
|
|
|
|
|
|
|
window.requestAnimationFrame(() => { |
|
|
|
|
element.scrollIntoView(true); |
|
|
|
|
}); |
|
|
|
|
this._scrolledIntoView = true; |
|
|
|
|
window.requestAnimationFrame(() => { |
|
|
|
|
element.scrollIntoView(true); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|