65 lines
2.4 KiB
Rust
65 lines
2.4 KiB
Rust
use utils::download_manager::DownloadManager;
|
|
use tauri::Manager;
|
|
|
|
mod models;
|
|
mod handlers;
|
|
mod utils;
|
|
|
|
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
|
pub fn run() {
|
|
tauri::Builder::default()
|
|
.plugin(tauri_plugin_opener::init())
|
|
.plugin(tauri_plugin_clipboard_manager::init())
|
|
.manage(utils::download_manager::DownloadManager::new())
|
|
.invoke_handler(tauri::generate_handler![
|
|
handlers::category::get_all_categories,
|
|
handlers::category::get_category_apps,
|
|
handlers::category::get_all_apps,
|
|
handlers::server::get_target_arch_to_store,
|
|
handlers::server::get_json_server_url,
|
|
handlers::server::get_img_server_url,
|
|
handlers::app::get_app_info,
|
|
handlers::app::search_all_apps,
|
|
handlers::home::get_home_links,
|
|
handlers::home::get_home_lists,
|
|
handlers::home::get_home_list_apps,
|
|
handlers::file::read_text_file,
|
|
handlers::file::save_text_file,
|
|
handlers::download::get_downloads,
|
|
handlers::download::add_download,
|
|
handlers::download::pause_download,
|
|
handlers::download::resume_download,
|
|
handlers::download::cancel_download,
|
|
handlers::deb::check_is_installed,
|
|
handlers::deb::launch_app,
|
|
utils::get_user_agent,
|
|
])
|
|
.on_window_event(|window, event| match event {
|
|
tauri::WindowEvent::Destroyed => {
|
|
// 获取 DownloadManager 实例并关闭 aria2
|
|
let download_manager = window.state::<DownloadManager>();
|
|
download_manager.shutdown_aria2();
|
|
}
|
|
_ => {}
|
|
})
|
|
.setup(|app| {
|
|
let app_handle = app.handle().clone();
|
|
// 创建后台任务检查下载状态
|
|
tauri::async_runtime::spawn(async move {
|
|
loop {
|
|
{
|
|
let download_manager = app_handle.state::<DownloadManager>();
|
|
if download_manager.has_downloads() {
|
|
let _ = download_manager.get_downloads().await;
|
|
}
|
|
}
|
|
tokio::time::sleep(tokio::time::Duration::from_secs(2)).await;
|
|
}
|
|
});
|
|
|
|
Ok(())
|
|
})
|
|
.run(tauri::generate_context!())
|
|
.expect("error while running tauri application");
|
|
}
|