synd_term/application/
app_config.rs

1use std::time::Duration;
2
3use crate::config;
4
5#[derive(Debug, Clone, Default)]
6pub struct Features {
7    pub enable_github_notification: bool,
8}
9
10#[derive(Debug, Clone)]
11pub struct Config {
12    pub idle_timer_interval: Duration,
13    pub throbber_timer_interval: Duration,
14    pub entries_limit: usize,
15    pub entries_per_pagination: i64,
16    pub feeds_per_pagination: i64,
17    pub features: Features,
18}
19
20impl Default for Config {
21    fn default() -> Self {
22        Self {
23            idle_timer_interval: Duration::from_secs(250),
24            throbber_timer_interval: Duration::from_millis(250),
25            entries_limit: config::feed::DEFAULT_ENTRIES_LIMIT,
26            entries_per_pagination: config::client::DEFAULT_ENTRIES_PER_PAGINATION,
27            feeds_per_pagination: config::client::DEFAULT_FEEDS_PER_PAGINATION,
28            features: Features::default(),
29        }
30    }
31}
32
33impl Config {
34    #[must_use]
35    pub fn with_idle_timer_interval(self, idle_timer_interval: Duration) -> Self {
36        Self {
37            idle_timer_interval,
38            ..self
39        }
40    }
41}