adsr / irslackd

self-hosted IRC gateway to Slack
Apache License 2.0
162 stars 21 forks source link

Away presence / mark as read #95

Open thekad opened 4 years ago

thekad commented 4 years ago

Description I believe irslackd doesn't change my presence to online when connecting to it. The end result is all my messages aren't marked as read until I open web/app slack. I use znc in front of irslackd, not sure if the interaction between the two is the problem.

Steps to reproduce

  1. fire up irslackd
  2. put znc in front of it
  3. connect to znc from hexchat and chat thru irslackd

Expected behavior Expected my presence to change to online and messages to be marked as read for the channels I have joined via irslackd

Log output unsure how much is needed, but I can see the presence message showing in the logs:

slack_out users.setPresence { presence: 'auto' }

Client setup

mbooth101 commented 4 years ago

Same apparently even without ZNC in the middle.

adsr commented 4 years ago

I think we'd need to call channels.mark etc periodically to mark messages as read. Since there's no way from ircd to tell if a user has read a channel, our options are somewhat limited. Calling *.mark on everything all the time seems bad. I think the best we can do is call *.mark each time a user sends a message on the corresponding conversation.

One other problem is that all the *.mark methods are deprecated in favor of the conversations API, however I don't see a corresponding conversations.mark method in the docs. I'll file a ticket with Slack to see what we're supposed to do now.

thekad commented 4 years ago

Another option would be to send a *.mark on disconnect or have a /slack read command.

adsr commented 4 years ago

Here is the response I got from Slack support.

Adding an equivalent channels.mark method to the Conversations API is not something we have immediate plans for. This is a request we've received from other developers too. There is a discussion about making conversations.mark or a similar method available to developers in the future, however the team is unable to commit to a specific timeline.

I encourage people to email Slack requesting a conversations.mark API method if they would like this feature. We can write a @slack read command very easily, however it won't work in a few months when Slack removes the old API methods.

fancypantalons commented 3 years ago

Good news, it looks like this has been added!

https://api.slack.com/methods/conversations.mark

My first thought is combining this with a new @ slack command to mark the current channel or all channels as read would make sense. I suspect I could combine that with a client-side hook to then mark channels as read when they're focused by sending the command automatically.

It's not clear to me it's necessary to call mark upon sending a message, though. Doesn't sending a message to a channel automatically fast-forward the read marker? Or does that really need to be done manually by the client?