IceCubesApp
IceCubesApp copied to clipboard
Keep scroll position when prepending new statuses in the Timeline
Agreed - this is a good idea
Yeah, reading all statuses is really difficult when we have to find the old scroll position
Would a good implementation of #116 cover this request as well?
Please! Can I bounty this?
Saving my timeline position is the thing keeping me from full timing this app.
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.
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
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.)
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…
I would love to see that feature. I tried Ivory and they implemented it very well.
I‘d like to boost this feature. It‘s the only missing one, Tusker and ivory have done it already.
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 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:

- 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 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.
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:
@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.
John Sundell’s latest Swift by Sundell article seems relevant: Observing the content offset of a SwiftUI ScrollView
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.
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.
It's not supposed to work for lists, only for the home timeline for now.
OK. Since I live in a list all day then I can't daily drive this. I'll open a new ticket for that?
Seems that it now does work for lists?
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.
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.