IceCubesApp icon indicating copy to clipboard operation
IceCubesApp copied to clipboard

Keep scroll position when prepending new statuses in the Timeline

Open Dimillian opened this issue 2 years ago • 11 comments

Dimillian avatar Jan 18 '23 13:01 Dimillian

Agreed - this is a good idea

Cowboyvol avatar Jan 19 '23 19:01 Cowboyvol

Yeah, reading all statuses is really difficult when we have to find the old scroll position

hahnmg avatar Jan 20 '23 05:01 hahnmg

Would a good implementation of #116 cover this request as well?

pattyland avatar Jan 20 '23 14:01 pattyland

Please! Can I bounty this?

Saving my timeline position is the thing keeping me from full timing this app.

amdavidson avatar Jan 20 '23 19:01 amdavidson

Not sure, for me:

  • My main timeline is a list
  • It's important that that list is persisted
  • It's important that my position in that list is stable on open close/reopen
  • New statuses should be prepended with a counter

I know very few clients get this right (probably only Toot! and Ivory), but this is really the sine qua non of an app like this.

alper avatar Jan 21 '23 10:01 alper

Indeed if would be nice if this would behave similar as with Twitterific back then:

  • read toots are marked (greyed out)
  • on load new toots are fetched, but added to the top of the list
  • a marker/line indicates where new toots begin
  • the view stays at the last read position, so new items are above and you scroll up to the most recent ones
  • the number of new toots marker is decreased on scroll (for every new item that is read) until reaching top/0 items left

bjoernweide avatar Jan 21 '23 18:01 bjoernweide

I’m pretty sure this is what I came here to request.

Expected behavior: fetching more posts fetches more posts but doesn’t do any visual scrolling — the current list shouldn’t move. (In a UIKit app that would mean adjusting the offset, I have no idea how to do that with SwiftUI.)

(Also, I have no idea what the icon means. I think if fetching didn’t scroll you could drop that feature.)

alakoring avatar Jan 21 '23 19:01 alakoring

Agree, this is the only thing that is keeping me from using Ice Cubes as my main client.

Would really want it to always remember my position in the timeline (unless you have a crazy amount of unread posts ofc). But to have it loose my position when opening the client after 8 hours sleep and like 50 posts is a little frustrating…

fillwe avatar Jan 22 '23 00:01 fillwe

I would love to see that feature. I tried Ivory and they implemented it very well.

Superanton avatar Jan 27 '23 11:01 Superanton

I‘d like to boost this feature. It‘s the only missing one, Tusker and ivory have done it already.

Callidus2000 avatar Jan 27 '23 19:01 Callidus2000

Also once this feature is implemented, the current button to load a new post one a time could be removed. If you can load all new posts and keep current position, there's no need to have to click a button repeatedly to load one post after another.

edrozenberg avatar Jan 28 '23 18:01 edrozenberg

@edrozenberg I was trying this out and was mystified a bit by it. You're right I guess.

This is the way it looks right now: IMG_3634

  • The left button loads all the new posts and scrolls you fully to the top
  • The right button loads and prepends one status to the timeline

alper avatar Jan 30 '23 15:01 alper

@alper For my usage I hugely prefer what TweetBot/Ivory does - pull down to refresh loads all new posts above your current position without kicking you to the top. That way there is no need for any new posts/next post buttons at all, you just scroll to the new posts above when you want. It's a huge reason I can't use Ice Cubes, since there is no nice way to load all new posts without losing position every time.

edrozenberg avatar Jan 30 '23 16:01 edrozenberg

For my usage I hugely prefer what TweetBot/Ivory does - pull down to refresh loads all new posts above your current position without kicking you to the top. That way there is no need for any new posts/next post buttons at all, you just scroll to the new posts above when you want. It's a huge reason I can't use Ice Cubes, since there is no nice way to load all new posts without losing position every time.

Same here. This is IMHO the only way it should work.

BTW: Mastoot does it the same way. Weeks before Ivory… :wink:

thoschworks avatar Jan 30 '23 17:01 thoschworks

@alper For my usage I hugely prefer what TweetBot/Ivory does - pull down to refresh loads all new posts above your current position without kicking you to the top. That way there is no need for any new posts/next post buttons at all, you just scroll to the new posts above when you want. It's a huge reason I can't use Ice Cubes, since there is no nice way to load all new posts without losing position every time.

I agree that this way would become very usable. Also, when the application is opened for the first time, it should be able to start from the last post instead of the latest one.

IMO the usability of Ivory, and Tweetbot before it, should be strongly taken as inspiration. This app has the capabilities to improve way more following the path that those apps traced with years and years of improvements.

danieletorelli avatar Jan 30 '23 17:01 danieletorelli

John Sundell’s latest Swift by Sundell article seems relevant: Observing the content offset of a SwiftUI ScrollView

DamianLettie avatar Jan 30 '23 20:01 DamianLettie

Next version (1.3) will have that. I want to point out that the remaining thing will be to restore position when switching account or launching the app from a killed state. This will come later.

Dimillian avatar Jan 31 '23 11:01 Dimillian

I see that this works for the timeline but for lists it doesn't. Whenever my list has new toots, it just takes me to the top without maintaining my position.

alper avatar Feb 21 '23 20:02 alper

It's not supposed to work for lists, only for the home timeline for now.

Dimillian avatar Feb 21 '23 20:02 Dimillian

OK. Since I live in a list all day then I can't daily drive this. I'll open a new ticket for that?

alper avatar Feb 21 '23 20:02 alper

Seems that it now does work for lists?

alper avatar Mar 08 '23 17:03 alper

Only if you're on the list. If you change timeline, it'll be back on top. But it's the way it is for now.

Dimillian avatar Mar 08 '23 18:03 Dimillian

That's fine. Position persistence even if switching the view is a lot to ask.

I think the only remaining thing would be to keep this view sticky on the list but as long as the app is hot in memory, the list stays there anyway.

alper avatar Mar 08 '23 19:03 alper