Add invite_room_state to spec. Flesh out info.

invite-room-state
Kegan Dougal 9 years ago
parent 62d53b4f33
commit d39a9082a0

@ -1,7 +1,7 @@
{ {
"type": "object", "type": "object",
"title": "The current membership state of a user in the room.", "title": "The current membership state of a user in the room.",
"description": "Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (``/rooms/<room id>/invite`` etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. The ``third_party_invite`` property will be set if the invite was an ``m.room.third_party_invite`` event, and absent if the invite was an ``m.room.member`` event.", "description": "Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (``/rooms/<room id>/invite`` etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. \n\nThe ``third_party_invite`` property will be set if the invite was an ``m.room.third_party_invite`` event, and absent if the invite was an ``m.room.member`` event.\n\nThis event also includes an ``invite_room_state`` key **outside the** ``content`` **key**. This contains an array of ``StrippedState`` Events. These events provide information on a few select state events such as the room name.",
"allOf": [{ "allOf": [{
"$ref": "core-event-schema/state_event.json" "$ref": "core-event-schema/state_event.json"
}], }],
@ -24,7 +24,7 @@
}, },
"third_party_invite": { "third_party_invite": {
"type": "object", "type": "object",
"title": "invite", "title": "Invite",
"properties": { "properties": {
"token": { "token": {
"type": "string", "type": "string",
@ -65,17 +65,22 @@
"description": "A subset of the state of the room at the time of the invite, if ``membership`` is ``invite``", "description": "A subset of the state of the room at the time of the invite, if ``membership`` is ``invite``",
"items": { "items": {
"type": "object", "type": "object",
"title": "StateEvent", "title": "StrippedState",
"description": "A stripped down state event, with only the ``type``, ``state_key`` and ``content`` keys.", "description": "A stripped down state event, with only the ``type``, ``state_key`` and ``content`` keys.",
"properties": { "properties": {
"type": { "type": {
"type": "string" "type": "string",
"description": "The ``type`` for the event.",
"enum": ["``m.room.join_rules``", "``m.room.canonical_alias``", "``m.room.avatar``", "``m.room.name``"]
}, },
"state_key": { "state_key": {
"type": "string" "type": "string",
"description": "The ``state_key`` for the event."
}, },
"content": { "content": {
"type": "object" "title": "EventContent",
"type": "object",
"description": "The ``content`` for the event."
} }
} }
} }

@ -7,18 +7,18 @@
{% for table in event.content_fields -%} {% for table in event.content_fields -%}
{{"``"+table.title+"``" if table.title else "" }} {{"``"+table.title+"``" if table.title else "" }}
================== ================= =========================================== ======================= ================= ===========================================
{{table.title or "Content"}} Key Type Description {{table.title or "Content"}} Key Type Description
================== ================= =========================================== ======================= ================= ===========================================
{% for row in table.rows -%} {% for row in table.rows -%}
{# -#} {# -#}
{# Row type needs to prepend spaces to line up with the type column (19 ch) -#} {# Row type needs to prepend spaces to line up with the type column (19 ch) -#}
{# Desc needs to prepend the required text (maybe) and prepend spaces too -#} {# Desc needs to prepend the required text (maybe) and prepend spaces too -#}
{# It also needs to then wrap inside the desc col (43 ch width) -#} {# It also needs to then wrap inside the desc col (43 ch width) -#}
{# -#} {# -#}
{{row.key}}{{row.type|indent(19-row.key|length)}}{{row.desc|wrap(43,row.req_str | indent(18 - (row.type|length))) |indent_block(37)}} {{row.key}}{{row.type|indent(24-row.key|length)}}{{row.desc|wrap(43,row.req_str | indent(18 - (row.type|length))) |indent_block(42)}}
{% endfor -%} {% endfor -%}
================== ================= =========================================== ======================= ================= ===========================================
{% endfor %} {% endfor %}
Example:: Example::

@ -532,6 +532,14 @@ class MatrixUnits(Units):
Units.prop(json_schema, "properties/content") Units.prop(json_schema, "properties/content")
) )
# this is horrible
if schema["type"] == "m.room.member":
invite_room_state = get_json_schema_object_fields(
json_schema["properties"]["invite_room_state"]["items"]
)
schema["content_fields"].extend(invite_room_state)
# grab msgtype if it is the right kind of event # grab msgtype if it is the right kind of event
msgtype = Units.prop( msgtype = Units.prop(
json_schema, "properties/content/properties/msgtype/enum" json_schema, "properties/content/properties/msgtype/enum"

Loading…
Cancel
Save