Enable support in power level events for old Synapse events with strings
This commit is contained in:
parent
872701dc83
commit
d16fd4b2c1
@ -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,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user