From 2db1df7ad9cde9471385912284bd8b7d3eb7758c Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Sat, 17 Sep 2022 03:53:52 -0700 Subject: Check closed IM channels for unread messages (#859) On connection check closed IM channels for unread messages and if any are found open a buffer. This ensures that new direct messages are not missed. --- wee_slack.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'wee_slack.py') diff --git a/wee_slack.py b/wee_slack.py index 0ce5026..f58cfe2 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -98,6 +98,7 @@ SLACK_API_TRANSLATOR = { "join": "conversations.open", "leave": "conversations.close", "mark": "conversations.mark", + "info": "conversations.info", }, "mpim": { "history": "conversations.history", @@ -2266,6 +2267,14 @@ class SlackChannel(SlackChannelCommon): is_open = self.is_open if hasattr(self, "is_open") else self.is_member if is_open or self.unread_count_display: self.create_buffer() + elif self.type == 'im': + # If it is an IM, we still might want to open it if there are unread messages. + info_method = self.team.slack_api_translator[self.type].get("info") + if info_method: + s = SlackRequest( + self.team, info_method, {"channel": self.identifier}, channel=self + ) + self.eventrouter.receive(s) def set_related_server(self, team): self.team = team @@ -3821,6 +3830,14 @@ def handle_conversationsmembers(members_json, eventrouter, team, channel, metada ) +def handle_conversationsinfo(message_json, eventrouter, team, channel, metadata): + if message_json['channel']['is_im']: + unread = message_json['channel']['unread_count_display'] + if unread: + channel.check_should_open(True) + channel.set_unread_count_display(unread) + + def handle_usersinfo(user_json, eventrouter, team, channel, metadata): user_info = user_json["user"] if not metadata.get("user"): -- cgit