INNER CODE UNIT · Rust
cancel_task
HemantKArya/BloomeeTunes · rust/src/api/downloader/mod.rs:319
pub async fn cancel_task(&self, task_id: String, delete_partial: bool) -> bool {
let Some(task) = self.get_task(&task_id) else { return false };
let (remove_now, temp_path, target_path) = {
let mut g = match task.lock() {
Ok(g) => g,
Err(_) => return false,
};
g.cancel_requested.store(true, Ordering::Release);
g.delete_partial_on_cancel.store(delete_partial, Ordering::Release);
let remove_now = !g.running;
if remove_now {
g.persisted.state = DownloadTaskState::Cancelled;
g.persisted.message = Some("Cancelled".to_string());
}
(remove_now, g.persisted.temp_path.clone(), g.persisted.target_path.clone())
};