mirror of
https://github.com/matrix-construct/construct
synced 2024-09-27 11:18:51 +02:00
ircd:Ⓜ️:createroom: Generate default power_levels w/ option for content_override.
This commit is contained in:
parent
bbaf38937b
commit
d4b8a8089e
4 changed files with 26 additions and 1 deletions
|
@ -81,7 +81,13 @@ struct ircd::m::createroom
|
||||||
/// developer note: this is false if undefined, but an m.room.guest_access
|
/// developer note: this is false if undefined, but an m.room.guest_access
|
||||||
/// may be present in the initial vector which allows guest access. This is
|
/// may be present in the initial vector which allows guest access. This is
|
||||||
/// only meaningful if and only if true.
|
/// only meaningful if and only if true.
|
||||||
json::property<name::guest_can_join, bool>
|
json::property<name::guest_can_join, bool>,
|
||||||
|
|
||||||
|
/// The power level content to override in the default power level event.
|
||||||
|
/// This object is applied on top of the generated m.room.power_levels
|
||||||
|
/// event content prior to it being sent to the room. Defaults to
|
||||||
|
/// overriding nothing.
|
||||||
|
json::property<name::power_level_content_override, json::object>
|
||||||
>
|
>
|
||||||
{
|
{
|
||||||
using super_type::tuple;
|
using super_type::tuple;
|
||||||
|
|
|
@ -133,6 +133,7 @@ struct ircd::m::name
|
||||||
static constexpr const char *const preset {"preset"};
|
static constexpr const char *const preset {"preset"};
|
||||||
static constexpr const char *const is_direct {"is_direct"};
|
static constexpr const char *const is_direct {"is_direct"};
|
||||||
static constexpr const char *const guest_can_join {"guest_can_join"};
|
static constexpr const char *const guest_can_join {"guest_can_join"};
|
||||||
|
static constexpr const char *const power_level_content_override {"power_level_content_override"};
|
||||||
|
|
||||||
static constexpr const char *const id_server {"id_server"};
|
static constexpr const char *const id_server {"id_server"};
|
||||||
|
|
||||||
|
|
|
@ -112,6 +112,7 @@ constexpr const char *const ircd::m::name::initial_state;
|
||||||
constexpr const char *const ircd::m::name::preset;
|
constexpr const char *const ircd::m::name::preset;
|
||||||
constexpr const char *const ircd::m::name::is_direct;
|
constexpr const char *const ircd::m::name::is_direct;
|
||||||
constexpr const char *const ircd::m::name::guest_can_join;
|
constexpr const char *const ircd::m::name::guest_can_join;
|
||||||
|
constexpr const char *const ircd::m::name::power_level_content_override;
|
||||||
|
|
||||||
constexpr const char *const ircd::m::name::id_server;
|
constexpr const char *const ircd::m::name::id_server;
|
||||||
|
|
||||||
|
|
|
@ -100,6 +100,23 @@ try
|
||||||
join(room, sender_id)
|
join(room, sender_id)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
thread_local char pl_content_buf[4_KiB]; try
|
||||||
|
{
|
||||||
|
send(room, sender_id, "m.room.power_levels", "",
|
||||||
|
{
|
||||||
|
json::get<"power_level_content_override"_>(request)?
|
||||||
|
json::get<"power_level_content_override"_>(request):
|
||||||
|
m::room::power::default_content(pl_content_buf, sender_id)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(const std::exception &e)
|
||||||
|
{
|
||||||
|
errors.append(string_view{fmt::sprintf
|
||||||
|
{
|
||||||
|
error_buf, "Failed to set power_levels: %s", e.what()
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
|
||||||
// Takes precedence over events set by preset, but gets overriden by name
|
// Takes precedence over events set by preset, but gets overriden by name
|
||||||
// and topic keys.
|
// and topic keys.
|
||||||
size_t i(0);
|
size_t i(0);
|
||||||
|
|
Loading…
Reference in a new issue