#[derive(serde::Serialize, Clone)]
pub struct Notification {
pub id: u32,
pub app_name: String,
pub summary: String,
pub body: String,
pub urgency: u8,
pub enwiro_env: Option<String>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum CloseReason {
Expired,
Dismissed,
Closed,
}
impl From<CloseReason> for u32 {
fn from(reason: CloseReason) -> u32 {
match reason {
CloseReason::Expired => 1,
CloseReason::Dismissed => 2,
CloseReason::Closed => 3,
}
}
}
pub enum Event {
Add(Notification, i32 ),
Expire {
id: u32,
generation: u64,
},
Close {
id: u32,
reason: CloseReason,
},
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn expiry_is_reason_one() {
assert_eq!(u32::from(CloseReason::Expired), 1);
}
#[test]
fn user_dismissal_is_reason_two() {
assert_eq!(u32::from(CloseReason::Dismissed), 2);
}
#[test]
fn close_notification_call_is_reason_three() {
assert_eq!(u32::from(CloseReason::Closed), 3);
}
}