mirror of
https://github.com/0PandaDEV/Qopy.git
synced 2025-04-21 13:14:04 +02:00
94 lines
3.6 KiB
Rust
94 lines
3.6 KiB
Rust
use tauri::{ async_runtime, AppHandle };
|
|
use tauri_plugin_dialog::{ DialogExt, MessageDialogButtons, MessageDialogKind };
|
|
use tauri_plugin_updater::UpdaterExt;
|
|
|
|
pub async fn check_for_updates(app: AppHandle, prompted: bool) {
|
|
println!("Checking for updates...");
|
|
|
|
let updater = app.updater().unwrap();
|
|
let response = updater.check().await;
|
|
|
|
match response {
|
|
Ok(Some(update)) => {
|
|
let cur_ver = &update.current_version;
|
|
let new_ver = &update.version;
|
|
let mut msg = String::new();
|
|
msg.extend([
|
|
&format!("{cur_ver} -> {new_ver}\n\n"),
|
|
"Would you like to install it now?",
|
|
]);
|
|
|
|
let window = app.get_webview_window("main").unwrap();
|
|
window.show().unwrap();
|
|
window.set_focus().unwrap();
|
|
|
|
app.dialog()
|
|
.message(msg)
|
|
.title("Qopy Update Available")
|
|
.buttons(
|
|
MessageDialogButtons::OkCancelCustom(
|
|
String::from("Install"),
|
|
String::from("Cancel")
|
|
)
|
|
)
|
|
.show(move |response| {
|
|
if !response {
|
|
return;
|
|
}
|
|
async_runtime::spawn(async move {
|
|
match
|
|
update.download_and_install(
|
|
|_, _| {},
|
|
|| {}
|
|
).await
|
|
{
|
|
Ok(_) => {
|
|
app.dialog()
|
|
.message(
|
|
"Update installed successfully. The application needs to restart to apply the changes."
|
|
)
|
|
.title("Qopy Update Installed")
|
|
.buttons(
|
|
MessageDialogButtons::OkCancelCustom(
|
|
String::from("Restart"),
|
|
String::from("Cancel")
|
|
)
|
|
)
|
|
.show(move |response| {
|
|
if response {
|
|
app.restart();
|
|
}
|
|
});
|
|
}
|
|
Err(e) => {
|
|
println!("Error installing new update: {:?}", e);
|
|
app.dialog()
|
|
.message(
|
|
"Failed to install new update. The new update can be downloaded from Github"
|
|
)
|
|
.kind(MessageDialogKind::Error)
|
|
.show(|_| {});
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
Ok(None) => {
|
|
println!("No updates available.");
|
|
}
|
|
Err(e) => {
|
|
if prompted {
|
|
let window = app.get_webview_window("main").unwrap();
|
|
window.show().unwrap();
|
|
window.set_focus().unwrap();
|
|
|
|
app.dialog()
|
|
.message("No updates available.")
|
|
.title("Qopy Update Check")
|
|
.show(|_| {});
|
|
}
|
|
|
|
println!("No updates available. {}", e.to_string());
|
|
}
|
|
}
|
|
}
|