@@ -4,6 +4,8 @@ use serde::{Deserialize, Serialize};
44use serde_json:: json;
55use specta:: Type ;
66use std:: collections:: BTreeMap ;
7+ #[ cfg( target_os = "macos" ) ]
8+ use tauri:: Listener ;
79use tauri:: { AppHandle , Wry } ;
810use tauri_plugin_store:: StoreExt ;
911use tracing:: { error, instrument} ;
@@ -335,6 +337,26 @@ impl GeneralSettingsStore {
335337 }
336338}
337339
340+ #[ cfg( target_os = "macos" ) ]
341+ #[ derive( Deserialize ) ]
342+ struct StoreChangePayload {
343+ key : String ,
344+ }
345+
346+ #[ cfg( target_os = "macos" ) ]
347+ fn sync_dock_visibility_on_general_settings_change ( app : & AppHandle ) {
348+ let app_for_listener = app. clone ( ) ;
349+ app. listen ( "store://change" , move |event| {
350+ let Ok ( payload) = serde_json:: from_str :: < StoreChangePayload > ( event. payload ( ) ) else {
351+ return ;
352+ } ;
353+
354+ if payload. key == "general_settings" {
355+ crate :: permissions:: schedule_macos_dock_visibility_sync ( & app_for_listener) ;
356+ }
357+ } ) ;
358+ }
359+
338360pub fn init ( app : & AppHandle ) {
339361 println ! ( "Initializing GeneralSettingsStore" ) ;
340362
@@ -354,6 +376,9 @@ pub fn init(app: &AppHandle) {
354376 error ! ( "Failed to save general settings: {}" , e) ;
355377 }
356378
379+ #[ cfg( target_os = "macos" ) ]
380+ sync_dock_visibility_on_general_settings_change ( app) ;
381+
357382 #[ cfg( target_os = "macos" ) ]
358383 crate :: permissions:: sync_macos_dock_visibility ( app) ;
359384
0 commit comments