[Glitch] Fix clicking on already-loaded thread scrolling to the top of the thread

Port 4c2aca777f to glitch-soc

Signed-off-by: Claire <claire.github-309c@sitedethib.com>
main
Claire 2023-10-09 16:46:09 +02:00
parent 8ef1a95b1c
commit 05159d2f94
1 changed files with 12 additions and 3 deletions

View File

@ -217,6 +217,7 @@ class Status extends ImmutablePureComponent {
componentDidMount () {
attachFullscreenListener(this.onFullScreenChange);
this.props.dispatch(fetchStatus(this.props.params.statusId));
this._scrollStatusIntoView();
}
static getDerivedStateFromProps(props, state) {
@ -614,10 +615,10 @@ class Status extends ImmutablePureComponent {
this.column = c;
};
componentDidUpdate (prevProps) {
const { status, ancestorsIds, multiColumn } = this.props;
_scrollStatusIntoView () {
const { status, multiColumn } = this.props;
if (status && (ancestorsIds.size > prevProps.ancestorsIds.size || prevProps.status?.get('id') !== status.get('id'))) {
if (status) {
window.requestAnimationFrame(() => {
this.node?.querySelector('.detailed-status__wrapper')?.scrollIntoView(true);
@ -634,6 +635,14 @@ class Status extends ImmutablePureComponent {
}
}
componentDidUpdate (prevProps) {
const { status, ancestorsIds } = this.props;
if (status && (ancestorsIds.size > prevProps.ancestorsIds.size || prevProps.status?.get('id') !== status.get('id'))) {
this._scrollStatusIntoView();
}
}
componentWillUnmount () {
detachFullscreenListener(this.onFullScreenChange);
}