use std::collections::HashMap;
use std::path::PathBuf;
use crate::types::Language;
pub type Favorites = HashMap<String, Language>;
fn path() -> Option<PathBuf> {
Some(dirs::cache_dir()?.join("hexplorer").join("favorites.json"))
}
pub fn load() -> Favorites {
let Some(p) = path() else {
return Favorites::new();
};
let Ok(bytes) = std::fs::read(&p) else {
return Favorites::new();
};
serde_json::from_slice::<Favorites>(&bytes).unwrap_or_default()
}
pub fn save(favs: &Favorites) {
let Some(p) = path() else { return };
if let Ok(json) = serde_json::to_string_pretty(favs) {
let _ = std::fs::write(&p, json);
}
}
pub fn toggle(favs: &mut Favorites, name: &str, language: Language) -> bool {
if favs.contains_key(name) {
favs.remove(name);
false
} else {
favs.insert(name.to_string(), language);
true
}
}