Skip to main content

par_term_config/config/config_struct/
update.rs

1use crate::types::UpdateCheckFrequency;
2use serde::{Deserialize, Serialize};
3
4/// Configuration for automatic update checking
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct UpdateConfig {
7    /// How often to check for new par-term releases
8    /// - never: Disable automatic update checks
9    /// - hourly: Check every hour
10    /// - daily: Check once per day (default)
11    /// - weekly: Check once per week
12    /// - monthly: Check once per month
13    #[serde(default = "crate::defaults::update_check_frequency")]
14    pub update_check_frequency: UpdateCheckFrequency,
15
16    /// ISO 8601 timestamp of the last update check (auto-managed)
17    #[serde(default)]
18    pub last_update_check: Option<String>,
19
20    /// Version that user chose to skip notifications for
21    #[serde(default)]
22    pub skipped_version: Option<String>,
23
24    /// Last version we notified the user about (prevents repeat notifications)
25    #[serde(default)]
26    pub last_notified_version: Option<String>,
27}
28
29impl Default for UpdateConfig {
30    fn default() -> Self {
31        Self {
32            update_check_frequency: crate::defaults::update_check_frequency(),
33            last_update_check: None,
34            skipped_version: None,
35            last_notified_version: None,
36        }
37    }
38}