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

Return to feed after opening notes may return user to incorrect place in feed #751

Open
lima46zulu opened this issue Mar 7, 2023 · 5 comments

Comments

@lima46zulu
Copy link

  1. On your feed scroll down a few notes
  2. Open a note
  3. Wait a few seconds (or more if you don't follow a lot of people)
  4. Click on "< Home"
  5. You may or may not be redirected to the same place in your feed.

This looks to be related to new notes being published and bumping down the feed. That's my guess as the longer the note is open the more scrolling you will have to do to go back to where the original note was in the feed.

Ideal state: Return to the same note in the feed when clicking on "<Home", even if new notes have been posted.

Fixing this would be a quality of life improvement. This is not really annoying when just opening a note and quickly closing it as scrolling is minimal. This is mostly an issue when opening notes to participate in the thread. By the time the user returns to the home screen the feed is widely out of sync.

Feed.Issue.mov
@kristapsk
Copy link

I have also experienced this.

@danieldaquino
Copy link
Contributor

@alltheseas @jb55 does this issue happen to you? I have tried closely following the steps and the video but I have not been able to replicate this issue on my end.

@danieldaquino
Copy link
Contributor

After talking to the team it seems like the problem is not with going back from an event, but switching between the notifications tab and the home feed tab

danieldaquino added a commit to danieldaquino/damus that referenced this issue Sep 10, 2024
This commit implements a way to save the scroll position within a
timeline. It does that by assigning each note in the timeline an ID
based on the NoteID, and adding a `scrollPosition` modifier along with
SceneStorage to keep track of and persist the scroll position along the
timeline view throughout a single app session.

Notes:
- Scroll position is not persisted across app restarts. When the user
  completely quits the app, scroll position is lost.
- This works on home feed and universe view. However, due to how
  Universe view is dynamically loaded, performance may not be as good as
  on the home feed
- This only works on iOS 17 and higher, since the necessary scroll
  position reading mechanism is only available in those versions. On
  older versions things should work as before this change.

Testing
-------

PASS

Damus: This commit
iOS: 17.6.1
Device: iPhone 13 mini
Steps:
1. Scroll down home feed to a note with a memorable image
2. Switch to the notifications tab
3. Switch back to the home tab. Ensure scroll position is at the memorable image (or close). PASS
4. Navigate into another profile from the home feed
5. Go back to the home feed by clicking the "back" button on the top
   left. Ensure scroll position is preserved. PASS
6. Navigate into another profile from the home feed again.
7. Go back to the home feed by clicking the home button at the bottom
   tab bar. Ensure scroll position is preserved. PASS
8. Click on the home button at the bottom tab bar while at the home
   feed. You should be taken to the top. PASS

Backwards compatibility testing
-------------------------------

PASS

Damus: This commit
iOS: 16.4
Device: iPhone SE simulator
Steps:
1. Navigate through the home feed, navigate between tabs
2. Ensure there are no visible regressions on navigation. PASS

Changelog-Fixed: Fixed situations where scroll position would be lost (iOS 17 only)
Closes: damus-io#751
Signed-off-by: Daniel D’Aquino <[email protected]>
danieldaquino added a commit to danieldaquino/damus that referenced this issue Sep 10, 2024
This commit implements a way to save the scroll position within a
timeline. It does that by assigning each note in the timeline an ID
based on the NoteID, and adding a `scrollPosition` modifier along with
SceneStorage to keep track of and persist the scroll position along the
timeline view throughout a single app session.

Notes:
- Scroll position is not persisted across app restarts. When the user
  completely quits the app, scroll position is lost.
- This works on home feed and universe view. However, due to how
  Universe view is dynamically loaded, performance may not be as good as
  on the home feed
- This only works on iOS 17 and higher, since the necessary scroll
  position reading mechanism is only available in those versions. On
  older versions things should work as before this change.

Testing
-------

PASS

Damus: This commit
iOS: 17.6.1
Device: iPhone 13 mini
Steps:
1. Scroll down home feed to a note with a memorable image
2. Switch to the notifications tab
3. Switch back to the home tab. Ensure scroll position is at the memorable image (or close). PASS
4. Navigate into another profile from the home feed
5. Go back to the home feed by clicking the "back" button on the top
   left. Ensure scroll position is preserved. PASS
6. Navigate into another profile from the home feed again.
7. Go back to the home feed by clicking the home button at the bottom
   tab bar. Ensure scroll position is preserved. PASS
8. Click on the home button at the bottom tab bar while at the home
   feed. You should be taken to the top. PASS

iOS 16 regression testing
-------------------------

PASS

Damus: This commit
iOS: 16.4
Device: iPhone SE simulator
Steps:
1. Navigate through the home feed, navigate between tabs
2. Ensure there are no visible regressions on navigation. PASS

Changelog-Fixed: Fixed situations where scroll position would be lost (iOS 17 only)
Closes: damus-io#751
Signed-off-by: Daniel D’Aquino <[email protected]>
@danieldaquino
Copy link
Contributor

Sent a PR to fix this: #2459

As far as I have tested, this fixes the issue where scroll position is lost when crossing tab view boundaries (e.g. Viewing a thread from the notifications tab and going back to the home feed), which was the part of the issue that I could replicate.

I heard of reports which claimed that this issue was also present in other occasions, such as going back from a deeply nested thread (accessed from the home feed itself). I was not able to reproduce that one, but the changes should improve that type of behavior as it is now programmed to persist scroll position throughout the app session, even if the view is loaded or unloaded. We should probably pay attention to user's feedback when we put this on the Purple TestFlight, to be sure (cc @jb55 @alltheseas)

@jb55 please let me know if you have any questions, suggestions, or concerns. Thank you!

@danieldaquino
Copy link
Contributor

Descoped from 1.10 due to performance regressions that will need to be worked on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Review
Development

No branches or pull requests

4 participants