use crate::{
Result,
utils::{get_md5_string, novel_catch_dir},
};
use parse_book_source::state::SourceState;
use std::path::PathBuf;
pub fn source_state_path(source_url: &str) -> Result<PathBuf> {
Ok(novel_catch_dir()?
.join("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(())
}