Patch up Matrix.Event.RoomCanonicalAlias
* Require an empty state key
This commit is contained in:
		| @@ -24,15 +24,24 @@ | ||||
|  * as suggestion to users which alias to use to advertise the room. | ||||
|  */ | ||||
| public class Matrix.Event.RoomCanonicalAlias : Matrix.Event.State { | ||||
|     /** | ||||
|      * The canonical alias. | ||||
|      */ | ||||
|     public string? canonical_alias { get; set; default = null; } | ||||
|  | ||||
|     protected override void | ||||
|     from_json(Json.Node json_data) | ||||
|         throws Matrix.Error | ||||
|     { | ||||
|         var content_root = json_data.get_object() | ||||
|             .get_member("content").get_object(); | ||||
|         Json.Node? node; | ||||
|         var root = json_data.get_object(); | ||||
|         var content_root = root.get_member("content").get_object(); | ||||
|         Json.Node? node = null; | ||||
|  | ||||
|         if (Config.DEBUG && ((node = root.get_member("state_key")) != null)) { | ||||
|             if (node.get_string() != "") { | ||||
|                 warning("state_key of a m.room.canonical_alias event is non-empty"); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if ((node = content_root.get_member("alias")) != null) { | ||||
|             _canonical_alias = node.get_string(); | ||||
| @@ -48,6 +57,11 @@ public class Matrix.Event.RoomCanonicalAlias : Matrix.Event.State { | ||||
|         var content_root = json_data.get_object() | ||||
|             .get_member("content").get_object(); | ||||
|  | ||||
|         if (_state_key != "") { | ||||
|             throw new Matrix.Error.INCOMPLETE( | ||||
|                     "Won't generate a m.room.canonical_alias event with a non-empty state_key"); | ||||
|         } | ||||
|  | ||||
|         if (_canonical_alias != null) { | ||||
|             content_root.set_string_member("alias", _canonical_alias); | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user