diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 462c0c96..662f7c30 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -733,7 +733,7 @@ async fn check_for_updates( app_handle: AppHandle, db_instance: State<'_, Mutex>>, yaak_updater: State<'_, Mutex>, -) -> Result<(), String> { +) -> Result { let pool = &*db_instance.lock().await; let update_mode = get_update_mode(pool).await; yaak_updater diff --git a/src-tauri/src/updates.rs b/src-tauri/src/updates.rs index f9ebd4e6..2e65321f 100644 --- a/src-tauri/src/updates.rs +++ b/src-tauri/src/updates.rs @@ -29,7 +29,7 @@ impl YaakUpdater { &mut self, app_handle: &AppHandle, mode: UpdateMode, - ) -> Result<(), updater::Error> { + ) -> Result { self.last_update_check = SystemTime::now(); let update_mode = get_update_mode_str(mode); @@ -37,7 +37,7 @@ impl YaakUpdater { info!("Checking for updates mode={} enabled={}", update_mode, enabled); if !enabled { - return Ok(()); + return Ok(false); } match app_handle @@ -81,9 +81,9 @@ impl YaakUpdater { }); }, ); - Ok(()) + Ok(true) } - Err(updater::Error::UpToDate) => Ok(()), + Err(updater::Error::UpToDate) => Ok(false), Err(e) => Err(e), } } @@ -91,9 +91,10 @@ impl YaakUpdater { &mut self, app_handle: &AppHandle, mode: UpdateMode, - ) -> Result<(), updater::Error> { - if self.last_update_check.elapsed().unwrap().as_secs() < MAX_UPDATE_CHECK_SECONDS { - return Ok(()); + ) -> Result { + let ignore_check = self.last_update_check.elapsed().unwrap().as_secs() < MAX_UPDATE_CHECK_SECONDS; + if ignore_check { + return Ok(false); } self.force_check(app_handle, mode).await diff --git a/src-web/components/SettingsDropdown.tsx b/src-web/components/SettingsDropdown.tsx index ce942c1d..58e0476d 100644 --- a/src-web/components/SettingsDropdown.tsx +++ b/src-web/components/SettingsDropdown.tsx @@ -1,5 +1,6 @@ import { invoke, shell } from '@tauri-apps/api'; import { useRef, useState } from 'react'; +import { useAlert } from '../hooks/useAlert'; import { useAppVersion } from '../hooks/useAppVersion'; import { useExportData } from '../hooks/useExportData'; import { useImportData } from '../hooks/useImportData'; @@ -20,6 +21,7 @@ export function SettingsDropdown() { const appVersion = useAppVersion(); const dropdownRef = useRef(null); const dialog = useDialog(); + const alert = useAlert(); const [showChangelog, setShowChangelog] = useState(false); useListenToTauriEvent('show_changelog', () => { @@ -98,7 +100,16 @@ export function SettingsDropdown() { key: 'update-check', label: 'Check for Updates', leftSlot: , - onSelect: () => invoke('check_for_updates'), + onSelect: async () => { + const hasUpdate: boolean = await invoke('check_for_updates'); + if (!hasUpdate) { + alert({ + title: 'No Updates', + body: 'You are currently up to date', + }); + } + console.log('HAS UPDATE', hasUpdate); + }, }, { key: 'feedback',