From cb8b589bc9c3a1c4c417fd8cf1b0ebc74b541bf6 Mon Sep 17 00:00:00 2001 From: Denis Kasak Date: Thu, 8 Mar 2018 11:00:54 +0100 Subject: [PATCH] Fix handling of empty room names. When room names that were previously set get deleted, the server still returns the name key, but set to the value of an empty string. Handle this case as if there is no room name. --- matrix/rooms.py | 6 +++--- matrix/utils.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/matrix/rooms.py b/matrix/rooms.py index 0044b8c..6c4b7c3 100644 --- a/matrix/rooms.py +++ b/matrix/rooms.py @@ -29,8 +29,8 @@ from matrix.colors import Formatted from matrix.utils import ( strip_matrix_server, color_for_tags, server_ts_to_weechat, sender_to_nick_and_color, add_event_tags, sanitize_id, sanitize_ts, - sanitize_text, shorten_sender, add_user_to_nicklist, get_prefix_for_level, - sanitize_power_level, string_strikethrough, + sanitize_string, sanitize_text, shorten_sender, add_user_to_nicklist, + get_prefix_for_level, sanitize_power_level, string_strikethrough, line_pointer_and_tags_from_event, sender_to_prefix_and_color) PowerLevel = namedtuple('PowerLevel', ['user', 'level']) @@ -718,7 +718,7 @@ class RoomNameEvent(RoomEvent): sender = sanitize_id(event_dict["sender"]) timestamp = sanitize_ts(event_dict["origin_server_ts"]) - name = sanitize_id(event_dict['content']['name']) + name = sanitize_string(event_dict['content']['name']) return cls(event_id, sender, timestamp, name) diff --git a/matrix/utils.py b/matrix/utils.py index a4d45ac..9d8d437 100644 --- a/matrix/utils.py +++ b/matrix/utils.py @@ -193,6 +193,11 @@ def sanitize_string(string): if not isinstance(string, str): raise TypeError + # string keys can have empty string values sometimes (e.g. room names that + # got deleted) + if string == "": + return None + remap = { ord('\b'): None, ord('\f'): None,