fcm_service/domain/android_config/
mod.rs

1mod android_notification;
2mod light_settings;
3mod notification_priority;
4mod proxy;
5mod visibility;
6
7use serde::{Deserialize, Serialize};
8
9pub use self::{
10    android_notification::AndroidNotification,
11    light_settings::{Color, LightSettings},
12    notification_priority::NotificationPriority,
13    proxy::Proxy,
14    visibility::Visibility,
15};
16use crate::FcmOptions;
17#[derive(Serialize, Deserialize, Debug, Clone)]
18#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
19pub enum Priority {
20    Normal,
21    High,
22}
23
24/// Configuration for Android devices.
25#[derive(Clone, Debug, Serialize, Deserialize, Default)]
26pub struct AndroidConfig {
27    collapse_key: Option<String>,
28    priority: Option<Priority>,
29    ttl: Option<String>,
30    restricted_package_name: Option<String>,
31    notification: Option<AndroidNotification>,
32    fcm_options: Option<FcmOptions>,
33    direct_boot_ok: Option<bool>,
34}
35
36impl AndroidConfig {
37    #[must_use]
38    pub fn new() -> Self {
39        Self {
40            ..Default::default()
41        }
42    }
43
44    #[must_use]
45    pub fn collapse_key(&self) -> Option<&String> {
46        self.collapse_key.as_ref()
47    }
48
49    #[must_use]
50    pub fn priority(&self) -> Option<&Priority> {
51        self.priority.as_ref()
52    }
53
54    #[must_use]
55    pub fn ttl(&self) -> Option<&String> {
56        self.ttl.as_ref()
57    }
58
59    #[must_use]
60    pub fn restricted_package_name(&self) -> Option<&String> {
61        self.restricted_package_name.as_ref()
62    }
63
64    #[must_use]
65    pub fn notification(&self) -> Option<&AndroidNotification> {
66        self.notification.as_ref()
67    }
68    #[must_use]
69    pub fn fcm_option(&self) -> Option<&FcmOptions> {
70        self.fcm_options.as_ref()
71    }
72
73    #[must_use]
74    pub fn direct_boot_ok(&self) -> Option<bool> {
75        self.direct_boot_ok
76    }
77
78    pub fn set_restricted_package_name(&mut self, restricted_package_name: Option<String>) {
79        self.restricted_package_name = restricted_package_name;
80    }
81
82    pub fn set_notification(&mut self, notification: Option<AndroidNotification>) {
83        self.notification = notification;
84    }
85
86    pub fn set_fcm_option(&mut self, fcm_option: Option<FcmOptions>) {
87        self.fcm_options = fcm_option;
88    }
89
90    pub fn set_direct_boot_ok(&mut self, direct_boot_ok: Option<bool>) {
91        self.direct_boot_ok = direct_boot_ok;
92    }
93
94    pub fn set_collapse_key(&mut self, collapse_key: Option<String>) {
95        self.collapse_key = collapse_key;
96    }
97
98    pub fn set_priority(&mut self, priority: Option<Priority>) {
99        self.priority = priority;
100    }
101
102    pub fn set_ttl(&mut self, ttl: Option<String>) {
103        self.ttl = ttl;
104    }
105}