use objc2_user_notifications::{UNAuthorizationStatus, UNNotificationSetting};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum AuthorizationStatus {
NotDetermined,
Denied,
Authorized,
Provisional,
Ephemeral,
Unknown,
}
impl From<UNAuthorizationStatus> for AuthorizationStatus {
fn from(status: UNAuthorizationStatus) -> Self {
match status {
UNAuthorizationStatus::NotDetermined => AuthorizationStatus::NotDetermined,
UNAuthorizationStatus::Denied => AuthorizationStatus::Denied,
UNAuthorizationStatus::Authorized => AuthorizationStatus::Authorized,
UNAuthorizationStatus::Provisional => AuthorizationStatus::Provisional,
UNAuthorizationStatus::Ephemeral => AuthorizationStatus::Ephemeral,
_ => AuthorizationStatus::Unknown,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum NotificationSettingStatus {
NotSupported,
Disabled,
Enabled,
Unknown,
}
impl From<UNNotificationSetting> for NotificationSettingStatus {
fn from(setting: UNNotificationSetting) -> Self {
match setting {
UNNotificationSetting::NotSupported => NotificationSettingStatus::NotSupported,
UNNotificationSetting::Disabled => NotificationSettingStatus::Disabled,
UNNotificationSetting::Enabled => NotificationSettingStatus::Enabled,
_ => NotificationSettingStatus::Unknown,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct NotificationSettings {
pub authorization_status: AuthorizationStatus,
pub alert_enabled: NotificationSettingStatus,
pub badge_enabled: NotificationSettingStatus,
pub sound_enabled: NotificationSettingStatus,
pub lock_screen_enabled: NotificationSettingStatus,
pub notification_center_enabled: NotificationSettingStatus,
}