mirror of
https://github.com/Grasscutters/Cultivation.git
synced 2025-12-13 23:54:48 +01:00
begin download handler
This commit is contained in:
@@ -13,7 +13,7 @@ use tauri::{
|
|||||||
// and docs ofc
|
// and docs ofc
|
||||||
|
|
||||||
#[tauri::command]
|
#[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
|
// Reqwest setup
|
||||||
let res = reqwest::get(url)
|
let res = reqwest::get(url)
|
||||||
.await
|
.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);
|
let new = min(downloaded + (chunk.len() as u64), total_size);
|
||||||
downloaded = new;
|
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
|
// Create event to send to frontend
|
||||||
|
window.emit("download_progress", &resHash);
|
||||||
}
|
}
|
||||||
|
|
||||||
// One more "finish" event
|
// One more "finish" event
|
||||||
|
window.emit("download_finished", &path);
|
||||||
|
|
||||||
// We are done
|
// We are done
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ use opener;
|
|||||||
fn main() {
|
fn main() {
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.invoke_handler(tauri::generate_handler![run_program])
|
.invoke_handler(tauri::generate_handler![run_program])
|
||||||
|
.invoke_handler(tauri::generate_handler![downloader::download_file])
|
||||||
.run(tauri::generate_context!())
|
.run(tauri::generate_context!())
|
||||||
.expect("error while running tauri application");
|
.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 {
|
export default class DownloadHandler {
|
||||||
|
downloads: Array<string>
|
||||||
|
|
||||||
|
// Pass tauri invoke function
|
||||||
constructor() {
|
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