diff options
author | Andrew Morgan <andrew@amorgan.xyz> | 2020-11-02 16:06:38 +0000 |
---|---|---|
committer | Andrew Morgan <andrew@amorgan.xyz> | 2020-11-11 16:46:17 +0000 |
commit | 63c767ac10f110c159f841b6b77ff74a9ac66b70 (patch) | |
tree | e5208137119b3f4f23f87e18a47374386cc48327 | |
parent | Add CS /_matrix/client/r0/knock/{roomIdOrAlias} endpoint (diff) | |
download | synapse-63c767ac10f110c159f841b6b77ff74a9ac66b70.tar.xz |
Add room_knock_state_types config option
This option serves the same purpose as the existing room_invite_state_types option, which defines what state events are sent over to a user that is invited to a room. This information is necessary for the user - who isn't in the room yet - to get some metadata about the room in order to display it in a pretty fashion in the user's pending-invites list. It includes information such as the room's name, avatar, topic, canonical alias, room encryption state etc. as well as the invite membership event which the invited user's homeserver can reference. This new option is the exact same, but is sent by a homeserver in the room to the knocker during the knock process. This option will actually be utilised in a later commit.
-rw-r--r-- | docs/sample_config.yaml | 11 | ||||
-rw-r--r-- | synapse/config/api.py | 31 |
2 files changed, 34 insertions, 8 deletions
diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml index 7e2cf97c3e..9c77271333 100644 --- a/docs/sample_config.yaml +++ b/docs/sample_config.yaml @@ -1395,6 +1395,17 @@ metrics_flags: # - "m.room.encryption" # - "m.room.name" +# A list of event types from a room that will be given to users when they +# knock on the room. This allows clients to display information about the +# room that they've knocked on, without actually being in the room yet. +# +#room_knock_state_types: +# - "m.room.join_rules" +# - "m.room.canonical_alias" +# - "m.room.avatar" +# - "m.room.encryption" +# - "m.room.name" + # A list of application service config files to use # diff --git a/synapse/config/api.py b/synapse/config/api.py index 74cd53a8ed..7604993b63 100644 --- a/synapse/config/api.py +++ b/synapse/config/api.py @@ -1,4 +1,5 @@ # Copyright 2015, 2016 OpenMarket Ltd +# Copyright 2020 The Matrix.org Foundation C.I.C. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,15 +22,18 @@ class ApiConfig(Config): section = "api" def read_config(self, config, **kwargs): + default_room_state_types = [ + EventTypes.JoinRules, + EventTypes.CanonicalAlias, + EventTypes.RoomAvatar, + EventTypes.RoomEncryption, + EventTypes.Name, + ] self.room_invite_state_types = config.get( - "room_invite_state_types", - [ - EventTypes.JoinRules, - EventTypes.CanonicalAlias, - EventTypes.RoomAvatar, - EventTypes.RoomEncryption, - EventTypes.Name, - ], + "room_invite_state_types", default_room_state_types + ) + self.room_knock_state_types = config.get( + "room_knock_state_types", default_room_state_types ) def generate_config_section(cls, **kwargs): @@ -44,6 +48,17 @@ class ApiConfig(Config): # - "{RoomAvatar}" # - "{RoomEncryption}" # - "{Name}" + + # A list of event types from a room that will be given to users when they + # knock on the room. This allows clients to display information about the + # room that they've knocked on, without actually being in the room yet. + # + #room_knock_state_types: + # - "{JoinRules}" + # - "{CanonicalAlias}" + # - "{RoomAvatar}" + # - "{RoomEncryption}" + # - "{Name}" """.format( **vars(EventTypes) ) |