Enable support in power level events for old Synapse events with strings

This commit is contained in:
Alejandro Domínguez 2020-11-20 03:36:07 +01:00 committed by Jonas Platte
parent 872701dc83
commit d16fd4b2c1

View File

@ -17,6 +17,10 @@ pub type PowerLevelsEvent = StateEvent<PowerLevelsEventContent>;
#[ruma_event(type = "m.room.power_levels")]
pub struct PowerLevelsEventContent {
/// The level required to ban a user.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level", skip_serializing_if = "is_default_power_level")]
#[ruma_event(skip_redaction)]
pub ban: Int,
@ -24,30 +28,54 @@ pub struct PowerLevelsEventContent {
/// The level required to send specific event types.
///
/// This is a mapping from event type to power level required.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::btreemap_int_or_string_to_int_values")
)]
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
#[ruma_event(skip_redaction)]
pub events: BTreeMap<EventType, Int>,
/// The default level required to send message events.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default, skip_serializing_if = "ruma_serde::is_default")]
#[ruma_event(skip_redaction)]
pub events_default: Int,
/// The level required to invite a user.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level", skip_serializing_if = "is_default_power_level")]
pub invite: Int,
/// The level required to kick a user.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level", skip_serializing_if = "is_default_power_level")]
#[ruma_event(skip_redaction)]
pub kick: Int,
/// The level required to redact an event.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level", skip_serializing_if = "is_default_power_level")]
#[ruma_event(skip_redaction)]
pub redact: Int,
/// The default level required to send state events.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level", skip_serializing_if = "is_default_power_level")]
#[ruma_event(skip_redaction)]
pub state_default: Int,
@ -55,11 +83,19 @@ pub struct PowerLevelsEventContent {
/// The power levels for specific users.
///
/// This is a mapping from `user_id` to power level for that user.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::btreemap_int_or_string_to_int_values")
)]
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
#[ruma_event(skip_redaction)]
pub users: BTreeMap<UserId, Int>,
/// The default power level for every user in the room.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default, skip_serializing_if = "ruma_serde::is_default")]
#[ruma_event(skip_redaction)]
pub users_default: Int,
@ -94,6 +130,10 @@ impl Default for PowerLevelsEventContent {
#[derive(Clone, Copy, Debug, PartialEq, Deserialize, Serialize)]
pub struct NotificationPowerLevels {
/// The level required to trigger an `@room` notification.
#[cfg_attr(
feature = "unstable-synapse-quirks",
serde(deserialize_with = "ruma_serde::int_or_string_to_int")
)]
#[serde(default = "default_power_level")]
pub room: Int,
}