mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-14 08:04:52 +01:00
begin download handler
This commit is contained in:
@@ -13,7 +13,7 @@ use tauri::{
|
||||
// and docs ofc
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn download_file(url: &str, path: &str) -> Result<(), String> {
|
||||
pub async fn download_file(window: tauri::Window, url: &str, path: &str) -> Result<(), String> {
|
||||
// Reqwest setup
|
||||
let res = reqwest::get(url)
|
||||
.await
|
||||
@@ -42,10 +42,29 @@ pub async fn download_file(url: &str, path: &str) -> Result<(), String> {
|
||||
let new = min(downloaded + (chunk.len() as u64), total_size);
|
||||
downloaded = new;
|
||||
|
||||
let mut resHash = std::collections::HashMap::new();
|
||||
|
||||
resHash.insert(
|
||||
"downloaded".to_string(),
|
||||
downloaded.to_string()
|
||||
);
|
||||
|
||||
resHash.insert(
|
||||
"total".to_string(),
|
||||
total_size.to_string()
|
||||
);
|
||||
|
||||
resHash.insert(
|
||||
"path".to_string(),
|
||||
path.to_string()
|
||||
);
|
||||
|
||||
// Create event to send to frontend
|
||||
window.emit("download_progress", &resHash);
|
||||
}
|
||||
|
||||
// One more "finish" event
|
||||
window.emit("download_finished", &path);
|
||||
|
||||
// We are done
|
||||
return Ok(());
|
||||
|
||||
@@ -14,6 +14,7 @@ use opener;
|
||||
fn main() {
|
||||
tauri::Builder::default()
|
||||
.invoke_handler(tauri::generate_handler![run_program])
|
||||
.invoke_handler(tauri::generate_handler![downloader::download_file])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
||||
|
||||
@@ -1,5 +1,28 @@
|
||||
|
||||
import { invoke } from '@tauri-apps/api/tauri'
|
||||
import { listen } from '@tauri-apps/api/event'
|
||||
|
||||
export default class DownloadHandler {
|
||||
downloads: Array<string>
|
||||
|
||||
// Pass tauri invoke function
|
||||
constructor() {
|
||||
console.log('AAAAAAAAAAAAAAAAAAAAA')
|
||||
this.downloads = []
|
||||
|
||||
listen('download_progress', (...payload) => {
|
||||
console.log(payload)
|
||||
})
|
||||
|
||||
listen('download_finished', (...payload) => {
|
||||
console.log(payload)
|
||||
})
|
||||
}
|
||||
|
||||
addDownload(url: string, path: string) {
|
||||
// Begin download from rust backend
|
||||
invoke('download_file', { url, path })
|
||||
|
||||
// Register event handler
|
||||
this.downloads.push(path)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user