use serde::{Deserialize, Serialize}; use crate::winget::{PostInstallStep, Software}; #[derive(Clone, Serialize, Deserialize)] pub struct AppSettings { pub repo_url: String, } impl Default for AppSettings { fn default() -> Self { Self { repo_url: "https://karlblue.github.io/winget-repo".to_string(), } } } #[derive(Clone, Serialize, Deserialize)] pub struct EssentialsRepo { pub version: String, pub essentials: Vec, } #[derive(Clone, Serialize, Deserialize)] pub struct InstallTask { pub id: String, pub version: Option, #[serde(default)] pub use_manifest: bool, pub manifest_url: Option, #[serde(default = "default_true")] pub enable_post_install: bool, } fn default_true() -> bool { true } #[derive(Clone, Serialize)] pub struct LogPayload { pub id: String, pub timestamp: String, pub command: String, pub output: String, pub status: String, } #[derive(Clone, Serialize, Deserialize)] pub struct SyncEssentialsResult { pub status: String, pub message: String, } #[derive(Clone, Serialize)] pub struct InstallProgress { pub id: String, pub status: String, pub progress: f32, } #[derive(Clone)] pub struct ResolvedPostInstall { pub software: Software, pub steps: Vec, } #[derive(Clone, Serialize, Deserialize)] pub struct EssentialsStatusItem { pub id: String, pub name: String, pub description: Option, pub version: Option, pub recommended_version: Option, pub available_version: Option, pub icon_url: Option, pub use_manifest: bool, pub manifest_url: Option, pub post_install: Option>, pub post_install_url: Option, pub action_label: String, pub target_version: Option, } #[derive(Clone, Serialize, Deserialize)] pub struct UpdateCandidate { pub id: String, pub name: String, pub description: Option, pub version: Option, pub available_version: Option, pub icon_url: Option, pub use_manifest: bool, pub manifest_url: Option, pub post_install: Option>, pub post_install_url: Option, pub action_label: String, pub target_version: Option, } #[derive(Clone, Serialize, Deserialize)] pub struct DashboardSnapshot { pub essentials_version: String, pub essentials: Vec, pub updates: Vec, pub installed_software: Vec, }