use crate::model::Article; pub struct Cache { pub articles: Vec
, pub selected_id: String, } pub fn save(articles: &[Article], selected_id: &str) { let dir = glib::user_data_dir().join("net.jeena.FeedTheMonkey"); std::fs::create_dir_all(&dir).ok(); let data = serde_json::json!({ "articles": articles, "selected_id": selected_id, }); if let Ok(s) = serde_json::to_string(&data) { std::fs::write(dir.join("cache.json"), s).ok(); } } pub fn load() -> Option { let path = glib::user_data_dir() .join("net.jeena.FeedTheMonkey") .join("cache.json"); let data = std::fs::read_to_string(path).ok()?; let json: serde_json::Value = serde_json::from_str(&data).ok()?; let articles: Vec
= serde_json::from_value(json["articles"].clone()).ok()?; let selected_id = json["selected_id"].as_str().unwrap_or("").to_string(); Some(Cache { articles, selected_id }) }