use notify_rust::Urgency as SendUrgency;
use serde::{Deserialize, Serialize};
#[derive(Eq, PartialEq, Hash, Copy, Clone, Debug, Deserialize, Serialize)]
pub enum Urgency {
Low = 0,
Normal = 1,
Critical = 2,
}
impl From<&Urgency> for SendUrgency {
fn from(value: &Urgency) -> Self {
match value {
Urgency::Low => SendUrgency::Low,
Urgency::Normal => SendUrgency::Normal,
Urgency::Critical => SendUrgency::Critical,
}
}
}
#[derive(Serialize, Deserialize, Debug)]
pub struct Notification {
pub level: u32,
pub urgency: Urgency,
#[serde(default, skip_serializing)]
pub notified: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_secs: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct BatteryFullNotification {
pub urgency: Urgency,
#[serde(default, skip_serializing)]
pub notified: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub time_secs: Option<u32>,
pub enabled: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub command: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}