mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-15 17:21:19 +10:00
@ -32,7 +32,7 @@
|
||||
@uninstall="() => uninstall()"
|
||||
@kill="() => kill()"
|
||||
@options="() => (configureModalOpen = true)"
|
||||
@resume="() => console.log('resume')"
|
||||
@resume="() => resumeDownload()"
|
||||
:status="status"
|
||||
/>
|
||||
<a
|
||||
@ -536,7 +536,7 @@ async function install() {
|
||||
|
||||
async function resumeDownload() {
|
||||
try {
|
||||
await invoke("resume_download", { game_id: game.value.id, version: status.value.version_name!, install_dir: status.value.install_dir! })
|
||||
await invoke("resume_download", { gameId: game.value.id })
|
||||
}
|
||||
catch(e) {
|
||||
console.error(e)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{path::PathBuf, sync::{Arc, Mutex}};
|
||||
|
||||
use crate::{
|
||||
database::db::borrow_db_checked, download_manager::{download_manager::DownloadManagerSignal, downloadable::Downloadable}, error::download_manager_error::DownloadManagerError, AppState
|
||||
database::{db::borrow_db_checked, models::data::GameDownloadStatus}, download_manager::{download_manager::DownloadManagerSignal, downloadable::Downloadable}, error::download_manager_error::DownloadManagerError, AppState
|
||||
};
|
||||
|
||||
use super::download_agent::GameDownloadAgent;
|
||||
@ -30,14 +30,20 @@ pub fn download_game(
|
||||
#[tauri::command]
|
||||
pub fn resume_download(
|
||||
game_id: String,
|
||||
version: String,
|
||||
install_dir: String,
|
||||
state: tauri::State<'_, Mutex<AppState>>,
|
||||
) -> Result<(), DownloadManagerError<DownloadManagerSignal>> {
|
||||
let s = borrow_db_checked().applications.game_statuses.get(&game_id).unwrap().clone();
|
||||
|
||||
let (version_name, install_dir) = match s {
|
||||
GameDownloadStatus::Remote { } => unreachable!(),
|
||||
GameDownloadStatus::SetupRequired { .. } => unreachable!(),
|
||||
GameDownloadStatus::Installed { .. } => unreachable!(),
|
||||
GameDownloadStatus::PartiallyInstalled { version_name, install_dir } => (version_name, install_dir),
|
||||
};
|
||||
let sender = state.lock().unwrap().download_manager.get_sender();
|
||||
let parent_dir: PathBuf = install_dir.into();
|
||||
let game_download_agent = Arc::new(Box::new(GameDownloadAgent::new(
|
||||
game_id, version, install_dir.into(), sender
|
||||
game_id, version_name.clone(), parent_dir.parent().unwrap().to_path_buf(), sender
|
||||
)) as Box<dyn Downloadable + Send + Sync>);
|
||||
Ok(state.lock().unwrap().download_manager.queue_download(game_download_agent)?)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user