use std::path::{Path, PathBuf};
use crate::task::Task;
pub fn data_dir() -> PathBuf {
let mut path = if let Some(data) = std::env::var_os("XDG_DATA_HOME") {
PathBuf::from(data)
} else if let Some(home) = std::env::var_os("HOME") {
PathBuf::from(home).join(".local/share")
} else {
PathBuf::from(".")
};
path.push("hyperfocus");
let _ = std::fs::create_dir_all(&path);
path
}
fn data_file(dir: &Path) -> PathBuf {
dir.join("tasks.json")
}
pub fn load_tasks(dir: &Path) -> Vec<Task> {
let path = data_file(dir);
match std::fs::read_to_string(&path) {
Ok(contents) => serde_json::from_str(&contents).unwrap_or_default(),
Err(_) => Vec::new(),
}
}
pub fn save_tasks(dir: &Path, tasks: &[Task]) {
let path = data_file(dir);
if let Ok(json) = serde_json::to_string_pretty(tasks) {
let _ = std::fs::write(path, json);
}
}