@@ 607,6 607,22 @@ class Status extends ImmutablePureComponent {
this.setState({ fullscreen: isFullscreen() });
};
+ shouldUpdateScroll = (prevRouterProps, { location }) => {
+ // Do not change scroll when opening a modal
+ if (location.state?.mastodonModalKey && location.state?.mastodonModalKey !== prevRouterProps?.location?.state?.mastodonModalKey) {
+ return false;
+ }
+
+ // Scroll to focused post if it is loaded
+ const child = this.node?.querySelector('.detailed-status__wrapper');
+ if (child) {
+ return [0, child.offsetTop];
+ }
+
+ // Do not scroll otherwise, `componentDidUpdate` will take care of that
+ return false;
+ };
+
render () {
let ancestors, descendants;
const { isLoading, status, ancestorsIds, descendantsIds, intl, domain, multiColumn, pictureInPicture } = this.props;
@@ 660,7 676,7 @@ class Status extends ImmutablePureComponent {
)}
/>
- <ScrollContainer scrollKey='thread'>
+ <ScrollContainer scrollKey='thread' shouldUpdateScroll={this.shouldUpdateScroll}>
<div className={classNames('scrollable', { fullscreen })} ref={this.setRef}>
{ancestors}