indieweb / microsub

For tracking issues on the Microsub specification
24 stars 1 forks source link

"Global Unread" timeline request #37

Open EdwardHinkle opened 5 years ago

EdwardHinkle commented 5 years ago

@swentel mentioned in this thread (https://github.com/indieweb/microsub/issues/24#issuecomment-500720436) that he would fine it useful to get "all unread posts" across channels for his start page.

I noted in that same thread that would fit in under the "global" uid, to match other features such as muting across all channels. What he described as needing sounds a lot like using the is_read=false parameter merged with passing global as the uid in the timeline fetch. I'm not sure how difficult this is from a server perspective as I have only worked on clients currently.

aaronpk commented 5 years ago

This would be pretty easy I think, but I know I'd never be use that feature, it doesn't map at all to the way I use channels. I could give it try in Aperture though and see if others find it useful.

EdwardHinkle commented 5 years ago

Yeah, 90% of the time this wouldn't apply to me, but I can see the utility. The same way the email clients have the "Unified Inbox" across different email clients. Most the time I want to be able to just look at one category. But sometimes I load my reader and I have like 1-2 posts in 5 different channels. For those instances it would be kind of nice to open up a reader that I knew support this "Unified Unread" and just scroll and read them. I get tired of tapping between the channels when I run into those couple of posts in each channel situations.

aaronpk commented 5 years ago

Now that you mention it, if I see the unread counts across all channels and there's only a few, I wouldn't mind the unified channel for quickly catching up on everything. However, I would only want content from the channels that keep unread counts, not the ones that only show the dot. But that could be a server-side setting that the clients don't need to be aware of.

EdwardHinkle commented 5 years ago

In the other thread I mentioned my plans for the homepage:

Also, funny thing to note, I am doing a similar homepage refresh for the iOS app (in it's new Remark incarnation) where it shows unread posts on the homepage, but I will also be grouping them underneath their respective channels. So it'll show "Notifications" and the first 5 new notifications, then "IndieWeb" and the first 5 new indieweb posts, etc.

@swentel mentioned that could actually go well with this global unread timeline request, if the channel information was included in the call.

I think that is definitely an interesting way to do it, especially if an ephemeral web client (like Monocle) wanted to be able to show new posts from various channels all in one call. I believe my current plan is to download timeline posts in a background thread, thus I will already have both the new unread posts and the channel information inside my local database. Thus, I won't really be doing any initial calls to the server for my homepage.

So this functionality isn't required for what I want to do, but it's an interesting use case since someone else may want to consider it.

swentel commented 5 years ago

Started with experiments in the Drupal microsub server.

URL: http://microsub-server/?action=timeline&channel=global&is_read=0

This allows getting (un)read either global, or per timeline.

Each microsub item in the response contains the channel information now too in a _channel property which contains id and name, cf screenshot. This makes it possible to give more context in the display if needed in the global context.

global-unread

Works fine for me that way. Not tested yet in Indigenous, but shouldn't take long.

swentel commented 5 years ago

This is available in indigenous BTW as a global 'unread' channel that pops up as soon as at least two channels have unread items.