From f5533b447c67c6c35f037c728edc6f942c105ffa Mon Sep 17 00:00:00 2001 From: Alexandr Stelnykovych Date: Thu, 20 Nov 2025 14:13:51 +0200 Subject: [PATCH] fix(traymenu): update SPN button logic and pause menu items based on SPN status --- desktop/tauri/src-tauri/src/traymenu.rs | 45 +++++++++++++++---------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/desktop/tauri/src-tauri/src/traymenu.rs b/desktop/tauri/src-tauri/src/traymenu.rs index 5cd9a7b4..490b55aa 100644 --- a/desktop/tauri/src-tauri/src/traymenu.rs +++ b/desktop/tauri/src-tauri/src/traymenu.rs @@ -175,11 +175,12 @@ fn build_tray_menu( (None, None, None) }; - // Setup SPN button - let spn_button_text = match spn_status_text { - "disabled" => "Enable SPN", - _ => "Disable SPN", - }; + // SPN button + let (spn_enabled, spn_button_text ) = match spn_status_text { + "disabled" => { (false, "Enable SPN") } + _ => { (true, "Disable SPN") }, + }; + let spn_status = MenuItemBuilder::with_id(SPN_STATUS_KEY, format!("SPN: {}", spn_status_text)) .enabled(false) .build(app) @@ -204,7 +205,7 @@ fn build_tray_menu( // Setup Pause/Resume menu items - let disabled_spn_pause = (spn_status_text == "disabled" && !pause_info.spn) || pause_info.interception; + let disabled_spn_pause = (!spn_enabled && !pause_info.spn) || pause_info.interception; let pause_spn_5min_item = MenuItemBuilder::with_id(PAUSE_SPN_5_KEY, "Pause SPN for 5 minutes").enabled(!disabled_spn_pause).build(app)?; let pause_spn_15min_item = MenuItemBuilder::with_id(PAUSE_SPN_15_KEY, "Pause SPN for 15 minutes").enabled(!disabled_spn_pause).build(app)?; let pause_spn_1hour_item = MenuItemBuilder::with_id(PAUSE_SPN_60_KEY, "Pause SPN for 1 hour").enabled(!disabled_spn_pause).build(app)?; @@ -213,17 +214,27 @@ fn build_tray_menu( let pause_pm_15min_item = MenuItemBuilder::with_id(PAUSE_PM_15_KEY, "Pause for 15 minutes").build(app)?; let pause_pm_1hour_item = MenuItemBuilder::with_id(PAUSE_PM_60_KEY, "Pause for 1 hour").build(app)?; - let pause_menu = SubmenuBuilder::new(app, "Pause") - .items(&[ - &pause_spn_5min_item, - &pause_spn_15min_item, - &pause_spn_1hour_item, - &PredefinedMenuItem::separator(app)?, - &pause_pm_5min_item, - &pause_pm_15min_item, - &pause_pm_1hour_item, - ]) - .build()?; + let pause_menu = if !spn_enabled && !pause_info.spn { + SubmenuBuilder::new(app, "Pause") + .items(&[ + &pause_pm_5min_item, + &pause_pm_15min_item, + &pause_pm_1hour_item, + ]) + .build()? + } else { + SubmenuBuilder::new(app, "Pause") + .items(&[ + &pause_spn_5min_item, + &pause_spn_15min_item, + &pause_spn_1hour_item, + &PredefinedMenuItem::separator(app)?, + &pause_pm_5min_item, + &pause_pm_15min_item, + &pause_pm_1hour_item, + ]) + .build()? + }; /* DEV MENU let force_show_window = MenuItemBuilder::with_id(FORCE_SHOW_KEY, "Force Show UI").build(app)?;