Skip to content

Commit 0f0da20

Browse files
committed
feat(desktop): sync dock visibility when general settings change on macOS
1 parent faf112a commit 0f0da20

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

apps/desktop/src-tauri/src/general_settings.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ use serde::{Deserialize, Serialize};
44
use serde_json::json;
55
use specta::Type;
66
use std::collections::BTreeMap;
7+
#[cfg(target_os = "macos")]
8+
use tauri::Listener;
79
use tauri::{AppHandle, Wry};
810
use tauri_plugin_store::StoreExt;
911
use 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+
338360
pub 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

Comments
 (0)