From c5ffbee5e47f3114b6379907fd2b2366ee0d18f4 Mon Sep 17 00:00:00 2001 From: Henrique Cavarsan Date: Thu, 20 Jun 2024 21:43:23 -0300 Subject: [PATCH] feat: refactor configs dirs --- crates/kftray-tauri/src/main.rs | 10 +++-- .../src/utils/validate_configs.rs | 37 ++++++++++++------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/crates/kftray-tauri/src/main.rs b/crates/kftray-tauri/src/main.rs index 379fd0de..0c9cd4aa 100644 --- a/crates/kftray-tauri/src/main.rs +++ b/crates/kftray-tauri/src/main.rs @@ -68,11 +68,15 @@ fn main() { is_pinned: is_pinned.clone(), runtime: runtime.clone(), }) - .manage(http_log_state.clone()) // Ensure the state is shared + .manage(http_log_state.clone()) .setup(move |app| { - alert_multiple_configs(); - let _ = config::clean_all_custom_hosts_entries(); + let app_handle = app.app_handle(); + + tauri::async_runtime::spawn(async move { + alert_multiple_configs(app_handle).await; + }); + let _ = config::clean_all_custom_hosts_entries(); let _ = db::init(); if let Err(e) = config::migrate_configs() { diff --git a/crates/kftray-tauri/src/utils/validate_configs.rs b/crates/kftray-tauri/src/utils/validate_configs.rs index 24cecd4c..b11d136e 100644 --- a/crates/kftray-tauri/src/utils/validate_configs.rs +++ b/crates/kftray-tauri/src/utils/validate_configs.rs @@ -1,12 +1,17 @@ extern crate dirs; -extern crate native_dialog; +extern crate tauri; use std::env; use std::path::PathBuf; -use native_dialog::MessageDialog; -use native_dialog::MessageType; - +use tauri::api::dialog::{ + MessageDialogBuilder, + MessageDialogKind, +}; +use tauri::{ + async_runtime::spawn_blocking, + AppHandle, +}; #[derive(Clone)] struct ConfigLocation { path: PathBuf, @@ -59,7 +64,9 @@ fn detect_multiple_configs() -> (Vec, Option) { (config_locations, active_config) } -fn show_alert_dialog(configs: Vec, active_config: Option) { +async fn show_alert_dialog( + app_handle: AppHandle, configs: Vec, active_config: Option, +) { let msg = configs .into_iter() .map(|config| format!(" * {}: {}", config.origin, config.path.display())) @@ -96,17 +103,21 @@ fn show_alert_dialog(configs: Vec, active_config: Option".to_string(), |p| p.join(".kftray").display().to_string()) ); - MessageDialog::new() - .set_type(MessageType::Warning) - .set_title("Multiple Configuration Directories Detected") - .set_text(&full_message) - .show_alert() - .unwrap(); + // Use the app handle to trigger the dialog on the main thread + spawn_blocking(move || { + let _ = app_handle.run_on_main_thread(move || { + MessageDialogBuilder::new("Multiple Configuration Directories Detected", &full_message) + .kind(MessageDialogKind::Warning) + .show(|_| {}); + }); + }) + .await + .unwrap(); } -pub fn alert_multiple_configs() { +pub async fn alert_multiple_configs(app_handle: AppHandle) { let (configs, active_config) = detect_multiple_configs(); if configs.len() > 1 { - show_alert_dialog(configs, active_config); + show_alert_dialog(app_handle, configs, active_config).await; } }