68 lines
2.2 KiB
Rust
68 lines
2.2 KiB
Rust
use tauri::Manager;
|
|
use tauri_plugin_dialog::DialogExt;
|
|
use tauri_plugin_dialog::MessageDialogButtons;
|
|
use tauri_plugin_dialog::MessageDialogKind;
|
|
|
|
#[cfg(feature = "portable")]
|
|
use {crate::dialog, crate::util, native_dialog::MessageType};
|
|
|
|
pub async fn check_and_install_updates(
|
|
app: tauri::AppHandle,
|
|
updater: tauri_plugin_updater::Updater,
|
|
) {
|
|
let update = updater.check().await;
|
|
|
|
if let Ok(Some(update)) = update {
|
|
#[cfg(not(feature = "portable"))]
|
|
{
|
|
let do_update = app
|
|
.dialog()
|
|
.message(format!(
|
|
"Update to {} is available!{}",
|
|
update.version,
|
|
update
|
|
.body
|
|
.clone()
|
|
.map(|body| format!("\n\nRelease Notes: {}", body))
|
|
.unwrap_or("".into())
|
|
))
|
|
.title("Update Available")
|
|
.kind(MessageDialogKind::Info)
|
|
.buttons(MessageDialogButtons::OkCancelCustom(
|
|
"Update".to_string(),
|
|
"Cancel".to_string(),
|
|
))
|
|
.blocking_show();
|
|
|
|
if do_update {
|
|
let _ = update.download_and_install(|_, _| {}, || {}).await;
|
|
|
|
tauri::process::restart(&app.env());
|
|
}
|
|
}
|
|
#[cfg(feature = "portable")]
|
|
{
|
|
let download_url = "https://hoppscotch.com/download";
|
|
let message = format!(
|
|
"An update (version {}) is available for the Hoppscotch Agent.\n\nPlease download the latest portable version from our website.",
|
|
update.version
|
|
);
|
|
|
|
dialog::info(&message);
|
|
|
|
if dialog::confirm(
|
|
"Open Download Page",
|
|
"Would you like to open the download page in your browser?",
|
|
MessageType::Info,
|
|
) {
|
|
if let None = util::open_link(download_url) {
|
|
dialog::error(&format!(
|
|
"Failed to open download page. Please visit {}",
|
|
download_url
|
|
));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|