Ashinch / ReadYou

An Android RSS reader presented in Material You style.
GNU General Public License v3.0
5.09k stars 201 forks source link

Miniflux Fever Api, "Mark All as Read" doesn't work. #599

Open SoiledBrush opened 9 months ago

SoiledBrush commented 9 months ago

1. Environment

2. Describe the bug

Unlike swiping, "Mark All as Read" doesn't mark entries as read on server side and article appears again after syncing.

Ashinch commented 8 months ago

Hi, @SoiledBrush

You're using the Fever API integration on Miniflux, right?

SoiledBrush commented 8 months ago

Yes

Ashinch commented 8 months ago

Yes

Hi, @SoiledBrush

I'm sorry to inform you that, after conducting tests and validations (using ReadYou, Reeder 5, and packet capture), the MarkAsRead feature (for feeds, groups or all) has deficiencies in its implementation on the Miniflux Fever API. Although this API returns 200 success signal to the client, the server does nothing.

Reeder 5 has Ignored this issue, so ReadYou has also indefinitely open this issue, until someone finds a solution.

I've attempted to use a compatibility method similar to the Google Reader API, looping through all unread items and then marking individual article items as read (which works), but it seems too clumsy and extremely inefficient, so it's not adopted.

gilcu3 commented 8 months ago

I've attempted to use a compatibility method similar to the Google Reader API, looping through all unread items and then marking individual article items as read (which works), but it seems too clumsy and extremely inefficient, so it's not adopted.

Hi, I am also using the fever API as it is currently the only way I know to use this app with a miniflux server. It is a pity that the mark all function does not work as expected on the server. Nevertheless, I think using the inefficient way on the ReadYou side might be better than ditching the feature all together, as at least it would make the feature work. As a user, since this function broke in the last release I am marking entries as read one by one anyway, which is much less efficient.

Just my opinion as a user, thank you for your work here

Ashinch commented 8 months ago

Hi, @gilcu3

Hi, I am also using the fever API as it is currently the only way I know to use this app with a miniflux server.

In version 0.9.12, we have added support for the Google Reader API, which seems to have good compatibility with Miniflux. You can give it a try. The Google Reader API offers many more modifiable operations compared to the Fever API, such as adding subscriptions, moving groups, and the batch mark as read feature that you desire.

Nevertheless, I think using the inefficient way on the ReadYou side might be better than ditching the feature all together, as at least it would make the feature work.

Things may not be as simple as they seem. The Fever API is well-supported in other services, and if too much additional compatibility is added for Miniflux, it could negatively impact other services using the Fever API. I believe that for Miniflux users hoping to resolve this issue, connecting via the Google Reader API is currently the most effective solution.

gilcu3 commented 8 months ago

In version 0.9.12, we have added support for the Google Reader API, which seems to have good compatibility with Miniflux. You can give it a try. The Google Reader API offers many more modifiable operations compared to the Fever API, such as adding subscriptions, moving groups, and the batch mark as read feature that you desire.

Just tested and it is working as a charm, thank you very much.

Things may not be as simple as they seem. The Fever API is well-supported in other services, and if too much additional compatibility is added for Miniflux, it could negatively impact other services using the Fever API. I believe that for Miniflux users hoping to resolve this issue, connecting via the Google Reader API is currently the most effective solution.

Got it, other services using the fever api would become inefficient as well, which is certainly not desirable. Can you provide some details on how the fever api fails with miniflux? I think there is no bug report yet in the miniflux repo stating this.

mbestavros commented 6 months ago

@Ashinch @SoiledBrush I also use Fever with Miniflux and was able to fix this here: https://github.com/Ashinch/ReadYou/pull/699

mbestavros commented 6 months ago

Follow-up: I've done some digging into Miniflux's "mark as read" code. This appears to be the relevant handler for "mark items as read": https://github.com/miniflux/v2/blob/main/internal/fever/handler.go#L492

Looking at that handler, it appears to return OK regardless of whether the action was successful or not. My hunch is that the action fails, the error is logged, and we hear nothing back to tell us of the failure.

In any case, re-reading the comments here, it seems like if Reeder 5 is ignoring this issue, then we probably should too. We could fix the issue by sending the current Unix time, but as @Ashinch pointed out, that would leave out any articles published in the future.