Lakr233 / Kimis

Kimis is a client for Misskey built with pure UIKit for quality.
Other
289 stars 19 forks source link

Preserve scroll position #16

Open adymorz opened 1 year ago

adymorz commented 1 year ago

User story: As a timeline reader who doesn't want to miss anything, I would like the scroll position to remain on the last entry read.

Current behavior: After starting the app, the timeline jumps to the latest entry.

Desired behavior: After starting the app, new entries are loaded in the timeline, but the scroll position remains on the last read entry.

App version: 1.15 (152) Firefish version: 1.0.3

Lakr233 commented 1 year ago

Developer Story

The timeline utilized by Kimis differs from your Misskey timeline. It utilized an algorithm on the device to rearrange and present content within a specific context. Not all notes are on your screen: The notes from server are only marked as suggested to display.

Each time we asking for notes from your server, it returns the newest. Then the algorithm is used to build your timeline. If we discover that the oldest note has lost its relevance, for instance, if it's significantly outdated and doesn't align with the current timeline, we then proceed to remove it from your existing timeline.

This approach is driven by three main factors:

Kimis aims to optimize the user experience by efficiently managing the timeline's content while considering the constraints posed by Misskey's functionality and the demands of network resources.

TL;DR Therefore, you have two options: either check back frequently or take matters into your own hands.

Off Topic It's completely acceptable for you to miss someone's note, as they can always mention you if needed. It will make your life easier. -- From a bad man having more then 10k follower and 1k following :P

Next Step I'll think about adding an indicator to show that you've reached the last position you've read. However, you'll still need to manually fetch the notes by scrolling down to that point.

adymorz commented 1 year ago

Thank you for the detailed and understandable explanations.

An indicator would be very helpful.

adymorz commented 1 year ago

Just an idea: Would it be possible to show the oldest of the newly loaded notes in case the oldest note has lost its relevance? This would at least allow the user to read through the newest notes which got loaded from the server.

Lakr233 commented 1 year ago

The newest is already shown, the old notes are the one getting removed from timeline. But it is not removed from database.

adymorz commented 1 year ago

I try to clarify: When it loads the new notes, it jumps to the newest of those newly loaded notes. Instead it would be more convenient and useful it if would jump to the oldest of the newly loaded notes.