//! `GET /_matrix/client/*/sync` use js_int::UInt; use ruma_common::OwnedUserId; use serde::{self, Deserialize, Serialize}; pub mod v3; #[cfg(feature = "unstable-msc3575")] pub mod v4; /// Unread notifications count. #[derive(Clone, Debug, Default, Deserialize, Serialize)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] pub struct UnreadNotificationsCount { /// The number of unread notifications with the highlight flag set. #[serde(skip_serializing_if = "Option::is_none")] pub highlight_count: Option, /// The total number of unread notifications. #[serde(skip_serializing_if = "Option::is_none")] pub notification_count: Option, } impl UnreadNotificationsCount { /// Creates an empty `UnreadNotificationsCount`. pub fn new() -> Self { Default::default() } /// Returns true if there are no notification count updates. pub fn is_empty(&self) -> bool { self.highlight_count.is_none() && self.notification_count.is_none() } } /// Information on E2E device updates. #[derive(Clone, Debug, Default, Deserialize, Serialize)] #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] pub struct DeviceLists { /// List of users who have updated their device identity keys or who now /// share an encrypted room with the client since the previous sync. #[serde(default, skip_serializing_if = "Vec::is_empty")] pub changed: Vec, /// List of users who no longer share encrypted rooms since the previous sync /// response. #[serde(default, skip_serializing_if = "Vec::is_empty")] pub left: Vec, } impl DeviceLists { /// Creates an empty `DeviceLists`. pub fn new() -> Self { Default::default() } /// Returns true if there are no device list updates. pub fn is_empty(&self) -> bool { self.changed.is_empty() && self.left.is_empty() } }