~cytrogen/masto-fe

4c2aca777f6ae6942d0cf11aee56a925694ccdef — Claire 2 years ago 774e118
Fix clicking on already-loaded thread scrolling to the top of the thread (#27338)

1 files changed, 13 insertions(+), 3 deletions(-)

M app/javascript/mastodon/features/status/index.jsx
M app/javascript/mastodon/features/status/index.jsx => app/javascript/mastodon/features/status/index.jsx +13 -3
@@ 220,6 220,8 @@ class Status extends ImmutablePureComponent {

  componentDidMount () {
    attachFullscreenListener(this.onFullScreenChange);

    this._scrollStatusIntoView();
  }

  UNSAFE_componentWillReceiveProps (nextProps) {


@@ 579,10 581,10 @@ class Status extends ImmutablePureComponent {
    this.node = 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);



@@ 599,6 601,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);
  }