feat: global progress bar
Also fix me having no foresight and executing things inside log::debug! macros
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
use std::{collections::HashSet, path::PathBuf};
|
||||
use futures::Stream;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::{AppHandle, Emitter};
|
||||
use tokio::fs::File;
|
||||
@ -15,7 +14,7 @@ pub struct DownloadHandler {
|
||||
#[derive(Serialize, Deserialize, Clone)]
|
||||
pub struct DownloadTick {
|
||||
pkg_key: PkgKey,
|
||||
ratio: f32
|
||||
ratio: f32,
|
||||
}
|
||||
|
||||
impl DownloadHandler {
|
||||
@ -50,14 +49,15 @@ impl DownloadHandler {
|
||||
|
||||
let mut cache_file_w = File::create(&zip_path_part).await?;
|
||||
let mut byte_stream = reqwest::get(&rmt.download_url).await?.bytes_stream();
|
||||
let first_hint = byte_stream.size_hint().0 as f32;
|
||||
let mut total_bytes = 0;
|
||||
|
||||
log::info!("downloading: {}", rmt.download_url);
|
||||
while let Some(item) = byte_stream.next().await {
|
||||
let i = item?;
|
||||
app.emit("download-tick", DownloadTick {
|
||||
total_bytes += i.len();
|
||||
_ = app.emit("download-progress", DownloadTick {
|
||||
pkg_key: pkg_key.clone(),
|
||||
ratio: 1.0f32 - (byte_stream.size_hint().0 as f32) / first_hint
|
||||
ratio: (total_bytes as f32) / (rmt.file_size as f32),
|
||||
})?;
|
||||
cache_file_w.write_all(&mut i.as_ref()).await?;
|
||||
}
|
||||
|
Reference in New Issue
Block a user