diff options
Diffstat (limited to 'synapse/util')
-rw-r--r-- | synapse/util/presentable_names.py (renamed from synapse/util/room_name.py) | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/synapse/util/room_name.py b/synapse/util/presentable_names.py index f55ef293b6..2ae01e453d 100644 --- a/synapse/util/room_name.py +++ b/synapse/util/presentable_names.py @@ -22,7 +22,7 @@ ALIAS_RE = re.compile(r"^#.*:.+$") ALL_ALONE = "Empty Room" -def calculate_room_name(room_state, user_id): +def calculate_room_name(room_state, user_id, fallback_to_members=True): # does it have a name? if ("m.room.name", "") in room_state: m_room_name = room_state[("m.room.name", "")] @@ -34,13 +34,13 @@ def calculate_room_name(room_state, user_id): canon_alias = room_state[("m.room.canonical_alias", "")] if ( canon_alias.content and canon_alias.content["alias"] and - looks_like_an_alias(canon_alias.content["alias"]) + _looks_like_an_alias(canon_alias.content["alias"]) ): return canon_alias.content["alias"] # at this point we're going to need to search the state by all state keys # for an event type, so rearrange the data structure - room_state_bytype = state_as_two_level_dict(room_state) + room_state_bytype = _state_as_two_level_dict(room_state) # right then, any aliases at all? if "m.room.aliases" in room_state_bytype: @@ -49,7 +49,7 @@ def calculate_room_name(room_state, user_id): first_alias_event = m_room_aliases.values()[0] if first_alias_event.content and first_alias_event.content["aliases"]: the_aliases = first_alias_event.content["aliases"] - if len(the_aliases) > 0 and looks_like_an_alias(the_aliases[0]): + if len(the_aliases) > 0 and _looks_like_an_alias(the_aliases[0]): return the_aliases[0] my_member_event = None @@ -66,6 +66,9 @@ def calculate_room_name(room_state, user_id): else: return "Room Invite" + if not fallback_to_members: + return None + # we're going to have to generate a name based on who's in the room, # so find out who is in the room that isn't the user. if "m.room.member" in room_state_bytype: @@ -105,17 +108,6 @@ def calculate_room_name(room_state, user_id): return descriptor_from_member_events(other_members) -def state_as_two_level_dict(state): - ret = {} - for k, v in state.items(): - ret.setdefault(k[0], {})[k[1]] = v - return ret - - -def looks_like_an_alias(string): - return ALIAS_RE.match(string) is not None - - def descriptor_from_member_events(member_events): if len(member_events) == 0: return "nobody" @@ -139,4 +131,15 @@ def name_from_member_event(member_event): member_event.content["displayname"] ): return member_event.content["displayname"] - return member_event.state_key \ No newline at end of file + return member_event.state_key + + +def _state_as_two_level_dict(state): + ret = {} + for k, v in state.items(): + ret.setdefault(k[0], {})[k[1]] = v + return ret + + +def _looks_like_an_alias(string): + return ALIAS_RE.match(string) is not None \ No newline at end of file |