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

Remember position #89

Open
papjul opened this issue Apr 7, 2017 · 57 comments
Open

Remember position #89

papjul opened this issue Apr 7, 2017 · 57 comments

Comments

@papjul
Copy link

papjul commented Apr 7, 2017

A feature I miss from Twidere is the ability to remember position in a tab.
When you refresh the tab, you have to go through all new toots to get back to where you stopped reading.
Users should be able to choose if they want to stay in position and have new toots appearing just above.
Thanks,

@iGEL
Copy link
Contributor

iGEL commented Apr 9, 2017

I'd ❤️ if it would also remember the scroll position over application restarts. It should basically start from the last completely seen post. This was the main reason I dumped the official Twitter client (it did this most of the time, but not always) and bought Flamingo.

@connyduck connyduck added this to the Tusky 1.3.0 milestone Oct 19, 2017
@charlag
Copy link
Collaborator

charlag commented Oct 26, 2017

I think this requires a lot of work, this means saving toots to the disk (DB e.g.).
I feel you and I would like to have it but it means rewriting quite a lot.
So, @connyduck , are you sure it's okay to have this for 1.3.0?

@connyduck
Copy link
Collaborator

Yes, this is not a really easy task, but in my opinion really important for good user experience.
I will not block the 1.1.3 release if it is the only thing not done though.

@penduin
Copy link

penduin commented Oct 26, 2017

+1 for very much wanting this.

i don't understand the "saving toots to disk" business. upon loading a new batch, we'd like to jump to the scroll position of the oldest item we just loaded. maybe that's not as simple as it sounds?

@charlag
Copy link
Collaborator

charlag commented Oct 26, 2017

@penduin ah, I misunderstood what users want. What I see is bigger feature when you see your timeline in the state you left it when you open the app (like @iGEL said). I think we can fix what you want pretty easily but it's much harder to save position after restart/switching tabs.

@penduin
Copy link

penduin commented Oct 26, 2017 via email

@Miklostibi
Copy link
Contributor

Wouldn't a middle option be more appropriate? Saving the currently loaded toots, and caching the latest 20~or so and the rest between being loaded lazily?

@achilleas-k
Copy link

Does anyone know how Twitter apps with TweetMarker support do it?

@connyduck connyduck modified the milestones: Tusky 1.3.0, Tusky 1.4.0 Nov 6, 2017
@connyduck connyduck modified the milestones: Tusky 1.4.0, Tusky 1.5.0 Dec 1, 2017
@connyduck connyduck removed this from the Tusky 1.5.0 milestone Feb 4, 2018
@GregSutcliffe
Copy link

Huge +1 for this, it's pretty much the only thing I miss from Twidere - which loads the latest tweets and then adds a "Load More" button above the current position if there's more, I.e

[New tweets]
<-- load more -->
<-- current position -->
[Old tweets]

That's assuming you scrolled to the top and then pulled-down to refresh the timeline, so you're always at the "latest" position before loading new things. Something similar in Tusky would be amazing.

Thanks for the excellent work either way, Tusky is great ;)

@semente
Copy link

semente commented May 1, 2018

In Twidere this feature is called "Read from bottom". It simply don't move the position to the top of the timeline when you refresh the tab. It doesn't mean it will fetch all the intermediate toots, there is a configurable limit and a button to load more intermediate toots if you wish, as @GregSutcliffe mentioned.

@charlag
Copy link
Collaborator

charlag commented May 1, 2018

Y'all, we want it,it's just a complex thing but @connyduck says it's planned right after pinned statuses & other profile improvements

@IzzySoft
Copy link

@charlag as you already wrote before: it would be nice if at least it remembered the position when doing a manual refresh. That'd be at least something. Sure it'd be even nicer to survive reboots – but please don't delay the "easy part" just because the other one is more complicated.

Apart from that: maybe peek into the other Mastodon clients and see how they've solved it (if they did – I'm pretty new to Mastodon and haven't tried other apps yet). There's e.g. Mastalab, Subway Tooter, AndStatus, Twidere, 11t, Mastobone, twilatte, MouseApp, Troutoss, Toot

@charlag
Copy link
Collaborator

charlag commented May 26, 2018

@IzzySoft I've implemented a thing which can remember you position during refresh now (it's not merged yet) but I've made it scroll to top if you refreshed manually and you're on the top. We can think about making it a preference.

@IzzySoft
Copy link

Sounds good, thanks! Looking forward to it getting merged and released.

If you make it a preference, please consider it trinary state: 1) "always jump to top" (as it is currently), 2) "always keep position" (i.e. regardless on whether I was at the top), 3) "keep postition if not already at top".

My preference would be 2) – as usually I am at the top when I refresh, and that's where I want to continue reading: with the toot next to the one I've seen before the refresh (so as long as that is there, I'm happy even if it's not trinary).

To add some logic: 3) should rather be "when not at top, jump to the pace that was top before the refresh" – makes much more sense to me 😉

@charlag
Copy link
Collaborator

charlag commented May 26, 2018

It all kinda makes sense to me, thanks for your input. I'd rather have one nice behavior rather than 3 of them, even if it's trivial to implement but I don't see how it's possible right now.
Let's try different solutions after #562 is merged

@IzzySoft
Copy link

Sure, @charlag – every big journey starts with a single step 😉 If by that "one nice behavior" you're referring to my second perspective aka "2)" I won't nag 🤣 But even if it is "keep position unless you're on top", a work-around would be scrolling down a little before refreshing. Ahem, wait: how should that work with "pull to refresh"? I see no other way to refresh (no button or something). And when you pull to refresh, you must be at the top. 😕

@charlag
Copy link
Collaborator

charlag commented May 27, 2018

You could change position while it loads

@IzzySoft
Copy link

If I'm fast enough 🤣 OK, yes, I can try that (didn't think of it, thanks!)

@ahihi
Copy link

ahihi commented Sep 15, 2018

any news on this, especially the part about saving position across app restarts?

just opening a link often causes Tusky to be shut down on my phone… :(

@charlag
Copy link
Collaborator

charlag commented Sep 15, 2018

Sorry, I'm terribly slow with my caching PR! I have an idea how to solve the main problem but it needs some work. I will try to work on this more in the following weeks. It's really not easy at all but maybe we can have minimal implementation which remembers only one part (where you closed it)

@charlag
Copy link
Collaborator

charlag commented Feb 2, 2019

@klausi hey, thanks for the support and perhaps it is the wrong place to discuss it but...
I personally myself bounded not by motivation by but meatspace and energy.
And second, I am against the sponsored features. People who don't have money deserve care as much (or perhaps more) as those who do and this will be my reasoning.
I am completely fine with someone using it as they job and implementing it in this way but that's just not how it works for me at least now. Thanks for listening.

@klausi
Copy link

klausi commented Feb 2, 2019

@charlag sure, thanks for your contributions! I want to pay someone to implement this feature, thought l go to the core developers first instead of hiring an external android developer. Then conny pointed me to opencollective, so I thought this is how you want to receive money?

We could also set up an external gofundme and hire a developer instead? Since it was already decided that this feature will be implemented now it is just a matter of planning and implementing?

@charlag
Copy link
Collaborator

charlag commented Feb 2, 2019

I have nothing against open collective, thanks for your support a lot! I don't manage it but my guess would be that if someone would have interest in taking the task it can be arranged.
I just wanted to say my thoughts and motivations, that's all. I don't like motivation boosts but I also don't take time from work to work on Tusky, as others do.

@klausi
Copy link

klausi commented Jun 5, 2019

Update: with the timeline caching changes this issue is fixed for me, thanks a lot! Since a couple of versions Tusky does not jump around when I open it and I can read on where I left off.

@morremeyer
Copy link

I can confirm what @klausi reported, but it still jumps when loading in the middle of the timeline (with the "load more" button).

@charlag
Copy link
Collaborator

charlag commented Jan 18, 2020

@mauricemeyer I've seen a really cool idea in one of the iOS apps but I can't remember which one, maybe it was Toot!. It was basically that if the gap is in the upper side of the screen it would say "load above" and if it's in the bottom side it would say "load below" We"ve been also missing min_id API support for that but now it's already very widespread so I think it would be cool to do something like that.

@iGEL
Copy link
Contributor

iGEL commented Nov 9, 2022

Just to throw in my idea, how I think I would go about implementing this. The chances are high that I'm missing something or you already though about this and discarded this idea.

I assume, you have a timestamp for each toot when it either was created or boosted to determinate it's order in the timeline. My idea is to remember the timestamp of the last fully visible toot for each account. To restore the position, you "just" need to determinate the position of the toot with that timestamp (or an older one, if it got deleted) and reset the scroll position.

This obviously doesn't restore the 100% exact position, since users don't scroll exactly to fully visible toots, but I think it might be even more useful than the last mid-toot position.

@modelmat
Copy link

The markers API is similar: https://docs.joinmastodon.org/methods/timelines/markers/

@nondeterminischtick
Copy link

nondeterminischtick commented Nov 11, 2022 via email

@guntbert
Copy link
Contributor

The weird thing - also sort of workaround: when I click on 'load more' and immediately scroll the cards so that 'load more' is above the visible area I get keep my position - but this can get pretty tedious... 🥲

@nondeterminischtick
Copy link

nondeterminischtick commented Nov 12, 2022 via email

@MattJeanes
Copy link

Yeah this is absolutely my biggest issue with Tusky, I (and I'm sure many others) like to read every single post and when I come back to the app I want to be where I was, this seems to mostly work but the load more button normally throws you right out of position and you've got to go looking for the last post you remember seeing and then continue scrolling up again

@s427
Copy link

s427 commented Dec 3, 2022

The problem with the workaround is, if your server is a bit slow, you have no way of knowing when the new posts have finished loading. If you scroll back up too soon, you lose your position again when they appear.

The weird thing - also sort of workaround

@nikclayton
Copy link
Contributor

Working on this in #3000

@guntbert
Copy link
Contributor

@nikclayton great news - thank you!
Is there any way I can give assistance?

@nondeterminischtick
Copy link

Latest version of Tusky has a Reading Order setting in Preferences that seems to solve any issues I had, especially around the 'Load more' functionality.

@foss-
Copy link

foss- commented Feb 8, 2023

With #3000 merged and https://github.com/tuskyapp/Tusky/releases/tag/v21.0 released can this issue here be closed?

@MattJeanes
Copy link

The reading order preference has solved the issue completely for me so I would say so!

@guntbert
Copy link
Contributor

guntbert commented Feb 8, 2023

Yes, thanks a lot. This is solved for me as well.
I'd only suggest to change the wording to "oldest unread first". I first thought it would change the order of display to having the oldest posts at the top.

@s427
Copy link

s427 commented Feb 8, 2023

I agree the wording for this new option is a bit confusing, since it doesn't affect the order in which the TL posts are displayed.

I think a better wording would be "reading direction" (instead of "reading order") and then "from bottom to top" and "from top to bottom".

Other than that, I too am very happy with this new feature. :)

@ichier
Copy link

ichier commented Feb 18, 2023

With #3000 merged and https://github.com/tuskyapp/Tusky/releases/tag/v21.0 released can this issue here be closed?

no! since scroll position gets lost when restarting the app. new toots are fetched and timeline jumps to top.

witch is ridiculous. i actually never understood why this is...

instead of fetching new toots and jumping to the top, when reopening, nothing should be fetched at all, and just be shown what was shown last.
ONLY THEN I can decide to just continue reading by scrolling up or tap the home button in order to fetch new stuff and jump to top.
that's pretty basic and what i would think is a intuitive behavior. twidere did that right since ever. why is this so weird in tusky? meh
basic rule: don't assume too much of what users want: let THEM decide. (yes, i'm totally not in the apple-camp here xD)

@guntbert
Copy link
Contributor

@ichier I definitely ask you to tone down. I don't expect to see words like "ridiculous" or "pretty basic" when talking to people who spend their time on providing us with something we can use.

@ichier
Copy link

ichier commented Feb 18, 2023

@guntbert okay, critique taken. sorry!
quick thought about tone: it's just some opinion, right? anyone can see that, so it shouldn't hurt anyone, since its not a fact. wouldn't hurt me, since it clearly is some wondering, isn't it? also: if i did phrase it other than I actually feel about it, like pseudo neutral, it would hurt the same or even more, wouldn't it? since it now is clear opinion, no one needs to argue about it: its just opinion. if I came along with some reasoning, it could end up in endless discussions of opposing groups thinking their opinion are facts. so why don't just take my feelings as they are and focus on what i actually had to say instead? ;)
PS: basic was meant in terms of pretty easy to do

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests