From 4415a318372954a171024c9fd15a429addccc5f8 Mon Sep 17 00:00:00 2001 From: Trygve Aaberge Date: Thu, 18 Apr 2024 22:01:59 +0200 Subject: v2: Fix IM title not being updated on user status change After we started fetching IM info in check_should_open, updating the IM title when the user changes their status stopped working because when info is fetched the members field is updated and the info included your own user in the members, while the update status code expected only the other user to be present in members. To fix this, make sure we always include both users in members and check for that. --- wee_slack.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/wee_slack.py b/wee_slack.py index 420c4f4..3c654cd 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -2887,12 +2887,12 @@ class SlackDMChannel(SlackChannel): has some important differences. """ - def __init__(self, eventrouter, users, **kwargs): + def __init__(self, eventrouter, users, myidentifier, **kwargs): dmuser = kwargs["user"] kwargs["name"] = users[dmuser].name if dmuser in users else dmuser super(SlackDMChannel, self).__init__(eventrouter, "im", **kwargs) self.update_color() - self.members = {self.user} + self.members = {myidentifier, self.user} if dmuser in users: self.set_topic(create_user_status_string(users[dmuser].profile)) @@ -3729,7 +3729,9 @@ def handle_rtmstart(login_data, eventrouter, team, channel, metadata): channels[item["id"]] = SlackChannel(eventrouter, **item) for item in login_data["ims"]: - channels[item["id"]] = SlackDMChannel(eventrouter, users, **item) + channels[item["id"]] = SlackDMChannel( + eventrouter, users, login_data["self"]["id"], **item + ) for item in login_data["mpims"]: channels[item["id"]] = SlackMPDMChannel( @@ -4123,7 +4125,9 @@ def process_user_change(message_json, eventrouter, team, channel, metadata): profile = message_json["user"]["profile"] if user: user.update_status(profile.get("status_emoji"), profile.get("status_text")) - dmchannel = team.find_channel_by_members({user.identifier}, channel_type="im") + dmchannel = team.find_channel_by_members( + {team.myidentifier, user.identifier}, channel_type="im" + ) if dmchannel: dmchannel.set_topic(create_user_status_string(profile)) @@ -4384,7 +4388,9 @@ def process_channel_rename(message_json, eventrouter, team, channel, metadata): def process_im_created(message_json, eventrouter, team, channel, metadata): item = message_json["channel"] - channel = SlackDMChannel(eventrouter, team=team, users=team.users, **item) + channel = SlackDMChannel( + eventrouter, team.users, team.myidentifier, team=team, **item + ) team.channels[item["id"]] = channel team.buffer_prnt("IM channel created: {}".format(channel.name)) @@ -7259,7 +7265,9 @@ def initiate_connection(token): def create_channel_from_info(eventrouter, channel_info, team, myidentifier, users): if channel_info.get("is_im"): - return SlackDMChannel(eventrouter, users, team=team, **channel_info) + return SlackDMChannel( + eventrouter, users, myidentifier, team=team, **channel_info + ) elif channel_info.get("is_mpim"): return SlackMPDMChannel( eventrouter, users, myidentifier, team=team, **channel_info -- cgit