use serde::{Deserialize, Serialize}; use tauri::{AppHandle, Manager}; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Reader { pub host: String, pub port: u16, } #[derive(Debug, Clone, Default, Serialize, Deserialize)] struct Preferences { #[serde(default)] reader: Vec, } pub fn load(app: &AppHandle) -> Option { let path = app.path().app_data_dir().ok()?.join("preferences.toml"); let contents = std::fs::read_to_string(path).ok()?; let preferences: Preferences = toml::from_str(&contents).ok()?; preferences.reader.into_iter().next() } pub fn save(app: &AppHandle, reader: Reader) -> Result<(), String> { let dir = app.path().app_data_dir().map_err(|err| err.to_string())?; std::fs::create_dir_all(&dir).map_err(|err| err.to_string())?; let preferences = Preferences { reader: vec![reader], }; let contents = toml::to_string_pretty(&preferences).map_err(|err| err.to_string())?; std::fs::write(dir.join("preferences.toml"), contents).map_err(|err| err.to_string()) }