Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reader: Restore the native scroll-to-top behavior #22771

Merged
merged 2 commits into from
Mar 6, 2024

Conversation

dvdchr
Copy link
Contributor

@dvdchr dvdchr commented Mar 5, 2024

Refs #22770

With the new Reader design (internal ref: pcdRpT-506-p2), we unknowingly brought two scroll views on screen having both scrollsToTop: true, which breaks the native scroll-to-top behavior when tapping the status bar.

The new scroll view comes from the ReaderNavigationMenu, which is written in SwiftUI. There's no direct access to the scrollsToTop property, so we need traverse the generated views and update the property manually after the component is rendered.

The native scroll-to-top in theory should trigger scrollViewDidScrollToTop(_:). In fact, this method is only triggered when scrolling to top from the status bar, but somehow it's not getting called (you had one job... 😅). So I depended on the existing scrollViewDidScroll method and added a little logic on the ReaderTabView that handles the scroll position calculations.

I thought this would be a one-liner, but it turned out to be a fun little rabbit hole! 🐰 🪄

To test

  • Launch the Jetpack app and navigate to the Reader tab.
  • Scroll down the stream for a bit.
  • Tap on the status bar.
  • 🔎 Verify that the stream now scrolls to the top.
  • 🔎 Verify that the navigation bar is shown after reaching the top.

Regression Notes

  1. Potential unintended areas of impact
    Should be none.

  2. What I did to test those areas of impact (or what existing automated tests I relied on)
    Manually tested the changes.

  3. What automated tests I added (or what prevented me from doing so)
    N/A.

PR submission checklist:

  • I have completed the Regression Notes.
  • I have considered adding unit tests for my changes.
  • I have considered adding accessibility improvements for my changes.
  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

Testing checklist:
Not applicable

  • WordPress.com sites and self-hosted Jetpack sites.
  • Portrait and landscape orientations.
  • Light and dark modes.
  • Fonts: Larger, smaller and bold text.
  • High contrast.
  • VoiceOver.
  • Languages with large words or with letters/accents not frequently used in English.
  • Right-to-left languages. (Even if translation isn’t complete, formatting should still respect the right-to-left layout)
  • iPhone and iPad.
  • Multi-tasking: Split view and Slide over. (iPad)

@dvdchr dvdchr added this to the 24.5 milestone Mar 5, 2024
@dvdchr dvdchr requested a review from wargcm March 5, 2024 14:42
@dvdchr dvdchr self-assigned this Mar 5, 2024
@dangermattic
Copy link
Collaborator

1 Warning
⚠️ View files have been modified, but no screenshot or video is included in the pull request. Consider adding some for clarity.

Generated by 🚫 Danger

@wpmobilebot
Copy link
Contributor

WordPress Alpha📲 You can test the changes from this Pull Request in WordPress Alpha by scanning the QR code below to install the corresponding build.
App NameWordPress Alpha WordPress Alpha
ConfigurationRelease-Alpha
Build Numberpr22771-5993d7d
Version24.4
Bundle IDorg.wordpress.alpha
Commit5993d7d
App Center BuildWPiOS - One-Offs #9075
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

@wpmobilebot
Copy link
Contributor

Jetpack Alpha📲 You can test the changes from this Pull Request in Jetpack Alpha by scanning the QR code below to install the corresponding build.
App NameJetpack Alpha Jetpack Alpha
ConfigurationRelease-Alpha
Build Numberpr22771-5993d7d
Version24.4
Bundle IDcom.jetpack.alpha
Commit5993d7d
App Center Buildjetpack-installable-builds #8118
Automatticians: You can use our internal self-serve MC tool to give yourself access to App Center if needed.

Copy link
Contributor

@wargcm wargcm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! :shipit:

@dvdchr dvdchr merged commit b51f170 into trunk Mar 6, 2024
24 of 28 checks passed
@dvdchr dvdchr deleted the issue/22770-restore-scrollstotop-behavior branch March 6, 2024 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants