Nextbird / nextbird

“Life support” fork of Corebird, a native GTK+ Twitter client
GNU General Public License v3.0
11 stars 1 forks source link

Don’t refresh the timeline while scrolling through it #3

Open lucaswerkmeister opened 5 years ago

lucaswerkmeister commented 5 years ago

Prior to the removal of streaming service, when you scrolled through the timeline and new tweets appeared, they would just be silently inserted at the top of the timeline, waiting for you to scroll up again. But now, the timeline is completely reloaded¹ on each “heartbeat” (see #1, #2), which includes resetting your scroll position to the top.

This is especially annoying if you were trying to catch up on hours of missed tweets, because now you’ll have to load the older parts of the timeline again just to find your old position again, which means more web requests, which means you’ll eventually get more Too Many Requests errors, at which point you have no other option to wait until Twitter lets you make requests again (I’m not sure what the waiting period is – five to ten minutes, perhaps?), or to grudgingly resort to the web UI.

I think it would be nice if there was a way to disable timeline updates if the scroll position is not at the top of the timeline. However, I’m not sure if that’s feasible.

¹ A side effect of this (one which I actually like) is that deleted tweets now vanish from your timeline. Previously they would be grayed out but still visible.

freecicero commented 5 years ago

Along the same lines as this thought, it would be nice if the "home" button acted as a "refresh" so that new tweets were not loaded at all unless the home (refresh) button were pushed.

Alexmitter commented 5 years ago

In classical twitter clients like the ones Twitter made for other platforms, the hartbeat is used just to check if there are new tweets, not load them. If new one are available, a blue dot is shown on the "Home" button, pressing it brings you up to the top and load the new tweets.

IBBoard commented 5 years ago

But that's Twitter. The only way that I know of to find new tweets is to fetch all the tweets since a point in time (well, an ID). If you're doing that then you might as well load them.

Fixing this should be possibly by polling instead of doing a complete reload.

Not loading until you press a button has the problem of handling large feeds. What happens if you didn't click for hours? How do you know how many more tweets there are? How do you know to keep clicking? And you need to make sure they're loaded in the right order.

Alexmitter commented 5 years ago

@IBBoard All twitter clients i know show a little indicator at the home button if newer tweets appeared on top while you are not at the top. I guess the problem is not that they are loaded there but that it resets your scrolling to the top.

lucaswerkmeister commented 5 years ago

By the way, currently this issue is not really applicable due to #14.

IBBoard commented 5 years ago

@Alexmitter That's how Corebird behaves (behaved) and how it should behave once loading uses the new API.