fix: old hotkey not getting unregistered correctly

This commit is contained in:
PandaDEV 2025-01-02 17:10:46 +10:00
parent c872490a95
commit 8054550443
No known key found for this signature in database
GPG key ID: 13EFF9BAF70EE75C

View file

@ -12,7 +12,7 @@ use tauri_plugin_aptabase::EventTracker;
lazy_static! { lazy_static! {
static ref HOTKEY_MANAGER: Mutex<Option<GlobalHotKeyManager>> = Mutex::new(None); static ref HOTKEY_MANAGER: Mutex<Option<GlobalHotKeyManager>> = Mutex::new(None);
static ref REGISTERED_HOTKEYS: Mutex<Vec<HotKey>> = Mutex::new(Vec::new()); static ref REGISTERED_HOTKEY: Mutex<Option<HotKey>> = Mutex::new(None);
} }
pub fn setup(app_handle: tauri::AppHandle) { pub fn setup(app_handle: tauri::AppHandle) {
@ -36,9 +36,6 @@ pub fn setup(app_handle: tauri::AppHandle) {
.block_on(crate::db::settings::get_keybind(app_handle_clone.clone())) .block_on(crate::db::settings::get_keybind(app_handle_clone.clone()))
.expect("Failed to get initial keybind"); .expect("Failed to get initial keybind");
let initial_shortcut_for_update = initial_keybind.clone();
let initial_shortcut_for_save = initial_keybind.clone();
if let Err(e) = register_shortcut(&initial_keybind) { if let Err(e) = register_shortcut(&initial_keybind) {
eprintln!("Error registering initial shortcut: {:?}", e); eprintln!("Error registering initial shortcut: {:?}", e);
} }
@ -46,7 +43,7 @@ pub fn setup(app_handle: tauri::AppHandle) {
app_handle.listen("update-shortcut", move |event| { app_handle.listen("update-shortcut", move |event| {
let payload_str = event.payload(); let payload_str = event.payload();
if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_update) { if let Some(old_hotkey) = REGISTERED_HOTKEY.lock().unwrap().take() {
let manager_guard = HOTKEY_MANAGER.lock().unwrap(); let manager_guard = HOTKEY_MANAGER.lock().unwrap();
if let Some(manager) = manager_guard.as_ref() { if let Some(manager) = manager_guard.as_ref() {
let _ = manager.unregister(old_hotkey); let _ = manager.unregister(old_hotkey);
@ -63,7 +60,7 @@ pub fn setup(app_handle: tauri::AppHandle) {
app_handle.listen("save_keybind", move |event| { app_handle.listen("save_keybind", move |event| {
let payload_str = event.payload().to_string(); let payload_str = event.payload().to_string();
if let Ok(old_hotkey) = parse_hotkey(&initial_shortcut_for_save) { if let Some(old_hotkey) = REGISTERED_HOTKEY.lock().unwrap().take() {
let manager_guard = HOTKEY_MANAGER.lock().unwrap(); let manager_guard = HOTKEY_MANAGER.lock().unwrap();
if let Some(manager) = manager_guard.as_ref() { if let Some(manager) = manager_guard.as_ref() {
let _ = manager.unregister(old_hotkey); let _ = manager.unregister(old_hotkey);
@ -100,7 +97,7 @@ fn register_shortcut(shortcut: &[String]) -> Result<(), Box<dyn std::error::Erro
let manager_guard = HOTKEY_MANAGER.lock().unwrap(); let manager_guard = HOTKEY_MANAGER.lock().unwrap();
if let Some(manager) = manager_guard.as_ref() { if let Some(manager) = manager_guard.as_ref() {
manager.register(hotkey.clone())?; manager.register(hotkey.clone())?;
REGISTERED_HOTKEYS.lock().unwrap().push(hotkey); *REGISTERED_HOTKEY.lock().unwrap() = Some(hotkey);
Ok(()) Ok(())
} else { } else {
Err("Hotkey manager not initialized".into()) Err("Hotkey manager not initialized".into())