diff --git a/include/ircd/m/createroom.h b/include/ircd/m/createroom.h index efc0158d2..74e8c1e07 100644 --- a/include/ircd/m/createroom.h +++ b/include/ircd/m/createroom.h @@ -106,5 +106,7 @@ struct ircd::m::createroom json::property > { + static conf::item version_default; + using super_type::tuple; }; diff --git a/modules/client/capabilities.cc b/modules/client/capabilities.cc index 822839018..489930605 100644 --- a/modules/client/capabilities.cc +++ b/modules/client/capabilities.cc @@ -53,7 +53,7 @@ ircd::m::client_capabilities::get(client &client, const json::value default_room_version { - "1", json::STRING + string_view{m::createroom::version_default}, json::STRING }; return resource::response diff --git a/modules/client/createroom.cc b/modules/client/createroom.cc index c09c66a40..9439806af 100644 --- a/modules/client/createroom.cc +++ b/modules/client/createroom.cc @@ -70,6 +70,14 @@ spec_preset(const string_view &preset) return std::find(begin(spec_presets), end(spec_presets), preset) != end(spec_presets); } +decltype(ircd::m::createroom::version_default) +IRCD_MODULE_EXPORT_DATA +ircd::m::createroom::version_default +{ + { "name", "ircd.m.createroom.version_default" }, + { "default", "5" }, +}; + resource::response post__createroom(client &client, const resource::request::object &request) @@ -79,6 +87,12 @@ post__createroom(client &client, request }; + // unconditionally set/override the room_version here + json::get<"room_version"_>(c) = string_view + { + m::createroom::version_default + }; + json::get<"creator"_>(c) = request.user_id; const m::id::room::buf room_id @@ -497,22 +511,26 @@ ircd::m::_create_event(const createroom &c) } }; - static conf::item default_version + const string_view &room_version { - { "name", "ircd.m.room.create.version_default" }, - { "default", "4" }, + json::get<"room_version"_>(c)? + string_view{json::get<"room_version"_>(c)}: + string_view{m::createroom::version_default} }; const json::iov::push _room_version { content, { - "room_version", json::value { default_version, json::STRING } + "room_version", json::value + { + room_version, json::STRING + } } }; m::vm::copts opts; - opts.room_version = default_version; + opts.room_version = room_version; opts.verify = false; m::vm::eval {