GeopJr / Tuba

Browse the Fediverse
https://tuba.geopjr.dev/
GNU General Public License v3.0
572 stars 61 forks source link

[Request]: Allow to hide boosts #1114

Open Emaro opened 1 month ago

Emaro commented 1 month ago

Describe the request

I really would like a feature which allows to hide boosts from timelines and profiles. A preference would satisfy my request, but even better would be an (optional) toggle that's directly accessible.

Sometimes I just want to see what the people I follow post. And sometimes I want to discover new content and see all the boosts. This use-case applies mainly to the home-timeline and lists.

For profiles the same functionality would be helpful, because I'm more interested in someones posts than what they boost if I'm considering to follow them.

Implementation Details

Saltane commented 1 month ago

+1 I think it's appropriate to tell I would like to have a similar filter for media too. I subscribed to way too many japanese artists and have no idea what they write (translator wont even help). A toggle to filter out everything but posts with media would be helpful. Preferably, boost and media filters would be two independent toggles, so that user could have a configuration of only direct posts, only posts and boosts with media, or only direct posts with media.

GeopJr commented 1 month ago

It's not that simple. Timelines are pagination based; the clients request X amount of posts since a post ID and the server returns a list. We can call that list a page. On Tuba, when you scroll near the bottom, it requests the next page.

The API doesn't support this kind of 'filtering', so clients that do, do it client-side (including mastodon-web). So with the above knowledge, you can see that there are two major issues with that:

  1. Inconsistent page sizes. Assuming that you've hidden replies and request 40 posts from the API, what happens if 30 of them are replies? The added page will only be 10 posts long. Suddenly, pages can just be long or short based on the filter, that's not a good experience
  2. Following the previous one, what happens if all 40 posts are replies? Do we just add nothing? or do we request the next page? And what happens if literally all other pages are only made of replies? Do we let Tuba spam the server forever till it gets rate limited? Keep in mind, that Tuba can't even know in advance, and will only know if the timeline 'is done' when it reaches the last page.

:-1:

Saltane commented 1 month ago

Aww shucks, didn't know that. Things really are complicated.

I would say the issue of getting whole page filtered is a really annoying one. I'm fine if my client takes a bit longer to fetch new posts, but I see how unclear it is to know, if the client is being slow, a server, or if fetched page just got filtered completely. An indicator would help, but then implementing it... can't think of any good UI for that.

As of page size inconsistency, I actually think it's fine. Users that toggle filter on will likely be expecting to receive only posts that passed the filter, which obviously is less than total posts available. I don't think this will be unexpected behavior for users. Right?? I can only tell for myself, and I know I would prefer smaller batches in exchange for higher quality feed. As long as Tuba makes it clear that it was me who made it behave like that.

Emaro commented 1 month ago

Thank you for responding @GeopJr. As a user, I'd gladly take the trade-off of waiting a bit longer or have uneven sized pages. It's an important feature to me because often I want to simply see what my follows are posting and not all the boosts (majority of posts) inbetween. Mastodon also allows you to hide boosts, if only on your home timeline.

I understand your reasoning though, there are issues with filtering out a lot of posts in user experience and predictability of traffic to the server.