From a79c3d51e09f252e86fbb7b592a43f7d3e9ac3ef Mon Sep 17 00:00:00 2001 From: Jonas Platte Date: Thu, 4 Jun 2020 21:07:27 +0200 Subject: [PATCH] Add presence module --- Cargo.toml | 5 +++-- src/lib.rs | 1 + src/presence.rs | 23 +++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/presence.rs diff --git a/Cargo.toml b/Cargo.toml index d12d3208..5fbb0160 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,7 @@ edition = "2018" [dependencies] matches = "0.1.8" -ruma-serde = "0.2.1" -serde = { version = "1.0.110", features = ["derive"] } +ruma-serde = "0.2.2" +serde = { version = "1.0.111", features = ["derive"] } serde_json = { version = "1.0.53", features = ["raw_value"] } +strum = { version = "0.18.0", features = ["derive"] } diff --git a/src/lib.rs b/src/lib.rs index 6849d043..7f8a83a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,4 +2,5 @@ #![warn(missing_docs)] +pub mod presence; pub mod push; diff --git a/src/presence.rs b/src/presence.rs new file mode 100644 index 00000000..2931095e --- /dev/null +++ b/src/presence.rs @@ -0,0 +1,23 @@ +use serde::{Deserialize, Serialize}; +use strum::{Display, EnumString}; + +/// A description of a user's connectivity and availability for chat. +#[derive(Clone, Copy, Debug, PartialEq, Display, EnumString, Deserialize, Serialize)] +#[serde(rename_all = "snake_case")] +#[strum(serialize_all = "snake_case")] +pub enum PresenceState { + /// Disconnected from the service. + Offline, + + /// Connected to the service. + Online, + + /// Connected to the service but not available for chat. + Unavailable, +} + +impl Default for PresenceState { + fn default() -> Self { + Self::Online + } +}