use crate::{Result, utils::get_md5_string};
use parse_book_source::state::SourceState;
use std::path::PathBuf;
pub fn source_state_path(source_url: &str) -> Result<PathBuf> {
Ok(crate::paths::AppPaths::user_default()?
.source_state()
.join(get_md5_string(source_url))
.with_extension("json"))
}
pub fn load_source_state(source_url: &str) -> SourceState {
let Ok(path) = source_state_path(source_url) else {
return SourceState::default();
};
let mut state = SourceState::load(&path);
if state.purge_if_expired() {
let _ = state.save(&path);
}
state
}
pub fn save_source_state(source_url: &str, state: &SourceState) -> Result<()> {
let path = source_state_path(source_url)?;
state.save(&path)?;
Ok(())
}