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