diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index b173cb2e5..398e17606 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,7 +3,6 @@ on: push: branches: - release - - tweak/enable-cuda-in-windows-release-build jobs: publish-tauri: strategy: diff --git a/apps/tauri/src/lib.rs b/apps/tauri/src/lib.rs index 788e18db5..a3b663fc2 100644 --- a/apps/tauri/src/lib.rs +++ b/apps/tauri/src/lib.rs @@ -11,6 +11,7 @@ use std::sync::Arc; use auto_launch::AutoLaunchBuilder; use constants::SEARCH_WIN_NAME; +use menu::MenuState; use rpc::RpcMutex; use tauri::image::Image; use tauri::process::current_binary; @@ -199,11 +200,6 @@ pub fn run() -> Result<(), Box> { .on_tray_icon_event(menu::handle_tray_icon_events) .build(app)?; - // Copy default plugins to data directory to be picked up by the backend - // if let Err(e) = copy_plugins(&config, app.path()) { - // log::error!("Unable to copy default plugins: {}", e); - // } - let bar = get_searchbar(app_handle); bar.show()?; @@ -351,7 +347,7 @@ pub fn update_auto_launch(user_settings: &UserSettings) { } } -async fn pause_crawler(app: AppHandle, _menu_id: String) { +async fn pause_crawler(app: AppHandle) { if let Some(rpc) = app.try_state::() { let pause_state = app.state::>().inner(); let rpc = rpc.lock().await; @@ -366,16 +362,17 @@ async fn pause_crawler(app: AppHandle, _menu_id: String) { let is_paused = !pause_state.load(Ordering::Relaxed); pause_state.store(is_paused, Ordering::Relaxed); - let _new_label = if is_paused { + let new_label = if is_paused { "▶️ Resume indexing" } else { "⏸ Pause indexing" }; - // if let Some(tray) = app.tray_by_id("main-tray"){ - // let _ = item_handle.set_title(new_label); - // let _ = item_handle.set_enabled(true); - // } + // Update menu item label. + if let Some(state) = app.try_state::() { + let _ = state.pause_toggle.set_text(new_label); + let _ = state.pause_toggle.set_enabled(true); + } } Err(err) => log::warn!("Error sending RPC: {}", err), } diff --git a/apps/tauri/src/menu.rs b/apps/tauri/src/menu.rs index b0fb98a4e..7d9b31297 100644 --- a/apps/tauri/src/menu.rs +++ b/apps/tauri/src/menu.rs @@ -5,11 +5,16 @@ use strum_macros::{Display, EnumString}; use tauri::{ menu::{Menu, MenuEvent, MenuItem, PredefinedMenuItem, Submenu}, tray::{TrayIcon, TrayIconEvent}, - AppHandle, Manager, PackageInfo, + AppHandle, Manager, PackageInfo, Wry, }; use crate::{pause_crawler, platform::os_open, window}; +#[derive(Clone)] +pub struct MenuState { + pub pause_toggle: MenuItem, +} + #[derive(Display, Debug, EnumString)] #[allow(non_camel_case_types, clippy::upper_case_acronyms)] pub enum MenuID { @@ -64,6 +69,18 @@ pub fn get_tray_menu( ], )?; + let pause_status = MenuItem::with_id( + app, + MenuID::CRAWL_STATUS.to_string(), + "⏸ Pause indexing", + true, + None::<&str>, + )?; + // manage the pause status menu item so we can update it later. + app.manage(MenuState { + pause_toggle: pause_status.clone(), + }); + tray.append_items(&[ &MenuItem::with_id( app, @@ -72,13 +89,7 @@ pub fn get_tray_menu( true, Some(user_settings.shortcut.clone()), )?, - &MenuItem::with_id( - app, - MenuID::CRAWL_STATUS.to_string(), - "⏸ Pause indexing", - true, - None::<&str>, - )?, + &pause_status, &PredefinedMenuItem::separator(app)?, &MenuItem::with_id( app, @@ -219,12 +230,11 @@ pub fn handle_tray_menu_events(app: &AppHandle, event: MenuEvent) { match menu_id { MenuID::CRAWL_STATUS => { // Don't block main thread when pausing the crawler. - tauri::async_runtime::spawn(pause_crawler(app.clone(), menu_id.to_string())); - // if let Some(tray) = app.tray_by_id("main-tray") { - // let _ = item_handle.set_title("Handling request..."); - // let _ = item_handle.set_enabled(false); - // tauri::async_runtime::spawn(pause_crawler(app.clone(), menu_id.to_string())); - // } + tauri::async_runtime::spawn(pause_crawler(app.clone())); + if let Some(state) = app.try_state::() { + let _ = state.pause_toggle.set_text("Handling request..."); + let _ = state.pause_toggle.set_enabled(false); + } } MenuID::DISCOVER => { window::navigate_to_tab(app, &crate::constants::TabLocation::Discover);