push-gateway-api: Make data field of Device not an Option

All fields of the inner type are optional themselves.
This commit is contained in:
Jonas Platte 2021-11-05 12:57:26 +01:00
parent 103b9df6c2
commit ac6ecc3e5e
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67
2 changed files with 16 additions and 3 deletions

View File

@ -420,6 +420,19 @@ impl PusherData {
pub fn new() -> Self { pub fn new() -> Self {
Default::default() Default::default()
} }
/// Returns `true` if all fields are `None`.
pub fn is_empty(&self) -> bool {
#[cfg(not(feature = "unstable-pre-spec"))]
{
self.url.is_none() && self.format.is_none()
}
#[cfg(feature = "unstable-pre-spec")]
{
self.url.is_none() && self.format.is_none() && self.default_payload.is_none()
}
}
} }
/// A special format that the homeserver should use when sending notifications to a Push Gateway. /// A special format that the homeserver should use when sending notifications to a Push Gateway.

View File

@ -208,8 +208,8 @@ pub struct Device {
/// ///
/// For 'http' pushers, this is the data dictionary passed in at pusher creation minus the /// For 'http' pushers, this is the data dictionary passed in at pusher creation minus the
/// `url` key. /// `url` key.
#[serde(skip_serializing_if = "Option::is_none")] #[serde(default, skip_serializing_if = "PusherData::is_empty")]
pub data: Option<PusherData>, pub data: PusherData,
/// A dictionary of customisations made to the way this notification is to be presented. /// A dictionary of customisations made to the way this notification is to be presented.
/// ///
@ -221,7 +221,7 @@ pub struct Device {
impl Device { impl Device {
/// Create a new device with the given app id and pushkey /// Create a new device with the given app id and pushkey
pub fn new(app_id: String, pushkey: String) -> Self { pub fn new(app_id: String, pushkey: String) -> Self {
Device { app_id, pushkey, pushkey_ts: None, data: None, tweaks: Vec::new() } Device { app_id, pushkey, pushkey_ts: None, data: PusherData::new(), tweaks: Vec::new() }
} }
} }