39 lines
1.1 KiB
Rust
39 lines
1.1 KiB
Rust
use tauri::AppHandle;
|
|
use tauri_plugin_updater::UpdaterExt;
|
|
|
|
/// Check for an available update. Returns Some(version_string) if one is
|
|
/// available, None if already up to date, and Err if the check fails.
|
|
#[tauri::command]
|
|
pub async fn check_for_update(app: AppHandle) -> Result<Option<String>, String> {
|
|
let update = app
|
|
.updater()
|
|
.map_err(|e| format!("Updater not available: {e}"))?
|
|
.check()
|
|
.await
|
|
.map_err(|e| format!("Update check failed: {e}"))?;
|
|
|
|
match update {
|
|
Some(u) => Ok(Some(u.version.to_string())),
|
|
None => Ok(None),
|
|
}
|
|
}
|
|
|
|
/// Download and stage the update. The app will install it on next launch.
|
|
#[tauri::command]
|
|
pub async fn install_update(app: AppHandle) -> Result<(), String> {
|
|
let update = app
|
|
.updater()
|
|
.map_err(|e| format!("Updater not available: {e}"))?
|
|
.check()
|
|
.await
|
|
.map_err(|e| format!("Update check failed: {e}"))?
|
|
.ok_or_else(|| "No update available".to_string())?;
|
|
|
|
update
|
|
.download_and_install(|_, _| {}, || {})
|
|
.await
|
|
.map_err(|e| format!("Install failed: {e}"))?;
|
|
|
|
Ok(())
|
|
}
|