stop downloads when removed

This commit is contained in:
SpikeHD
2022-05-12 22:25:07 -07:00
parent 853ab1ea80
commit 5126f89d8b
3 changed files with 9 additions and 4 deletions

View File

@@ -50,6 +50,11 @@ pub async fn download_file(window: tauri::Window, url: &str, path: &str) -> Resu
// Await chunks
while let Some(item) = stream.next().await {
// Stop the loop if the download is removed from the list
if !DOWNLOADS.lock().unwrap().contains(&path.to_string()) {
break;
}
let chunk = match item {
Ok(itm) => itm,
Err(e) => {

View File

@@ -33,8 +33,8 @@ async function download(url: string, filename: string, path: string) {
async function TESTDOWNLOAD() {
download(
'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/stable.zip',
'grasscutter.zip',
'https://github.com/Koko-boya/Grasscutter_Resources/archive/refs/heads/main.zip',
'resources.zip',
'S:\\Cultivation'
)
}

View File

@@ -89,13 +89,13 @@ export default class DownloadHandler {
}
getTotalAverage() {
const files = this.downloads.filter(d => d.status !== 'finished')
const files = this.downloads.filter(d => d.status === 'downloading')
const total = files.reduce((acc, d) => acc + d.total, 0)
const progress = files.reduce((acc, d) => acc + d.progress, 0)
return {
average: (progress / total) * 100 || 0,
files: this.downloads.filter(d => d.status !== 'finished' && d.status !== 'error').length,
files: this.downloads.filter(d => d.status === 'downloading').length,
totalSize: total,
}
}