fix windows startup crash (rookie mistake)

This commit is contained in:
2026-09-03 22:08:48 +08:00
parent 0cad78718a
commit 0c1440f926
5 changed files with 17 additions and 11 deletions
+2 -2
View File
@@ -19,10 +19,10 @@ pub async fn init(handle: &AppHandle) -> Result<(), String> {
if settings.onboarding_done { if settings.onboarding_done {
start(handle).await; start(handle).await;
if cfg!(target_os = "macos") && !accessibility_permission_granted { if cfg!(target_os = "macos") && !accessibility_permission_granted {
crate::ui::onboarding::show_accessibility_page(handle)?; crate::ui::onboarding::show_accessibility_page(handle).await?;
} }
} else { } else {
crate::ui::onboarding::show_initial(handle)?; crate::ui::onboarding::show_initial(handle).await?;
} }
Ok(()) Ok(())
} }
+8 -2
View File
@@ -56,8 +56,8 @@ pub fn run() {
.setup(move |app| { .setup(move |app| {
specta_builder.mount_events(app); specta_builder.mount_events(app);
let handle = app.handle().clone(); let handle = app.handle().clone();
ui::splashscreen::open(&handle)?;
tauri::async_runtime::spawn(async move { tauri::async_runtime::spawn(async move {
ui::splashscreen::open(&handle).await.unwrap();
let launch_result = launch_app(&handle).await.map_err(|error| error.to_string()); let launch_result = launch_app(&handle).await.map_err(|error| error.to_string());
if let Err(error) = launch_result { if let Err(error) = launch_result {
@@ -69,7 +69,13 @@ pub fn run() {
}) })
.build(tauri::generate_context!()) .build(tauri::generate_context!())
.expect("error while running tauri application") .expect("error while running tauri application")
.run(|_, _| ()); .run(|_, e| {
if let tauri::RunEvent::ExitRequested { code, api, .. } = e {
if code.is_none() {
api.prevent_exit();
}
}
});
} }
fn specta_builder() -> tauri_specta::Builder<tauri::Wry> { fn specta_builder() -> tauri_specta::Builder<tauri::Wry> {
+1 -1
View File
@@ -61,7 +61,7 @@ async fn apply_permission_state(handle: &AppHandle, granted: bool) -> Result<boo
if granted { if granted {
crate::application::reconcile_cursor(handle).await; crate::application::reconcile_cursor(handle).await;
} else { } else {
crate::ui::onboarding::show_accessibility_page(handle)?; crate::ui::onboarding::show_accessibility_page(handle).await?;
} }
} }
Ok(true) Ok(true)
+5 -5
View File
@@ -2,7 +2,7 @@ use tauri::{AppHandle, Manager, WebviewUrl};
const WINDOW_LABEL: &str = "onboarding"; const WINDOW_LABEL: &str = "onboarding";
fn show(handle: &AppHandle, accessibility_only: bool) -> Result<(), String> { async fn show(handle: &AppHandle, accessibility_only: bool) -> Result<(), String> {
if let Some(window) = handle.get_webview_window(WINDOW_LABEL) { if let Some(window) = handle.get_webview_window(WINDOW_LABEL) {
if accessibility_only { if accessibility_only {
window window
@@ -44,10 +44,10 @@ fn show(handle: &AppHandle, accessibility_only: bool) -> Result<(), String> {
Ok(()) Ok(())
} }
pub fn show_initial(handle: &AppHandle) -> Result<(), String> { pub async fn show_initial(handle: &AppHandle) -> Result<(), String> {
show(handle, false) show(handle, false).await
} }
pub fn show_accessibility_page(handle: &AppHandle) -> Result<(), String> { pub async fn show_accessibility_page(handle: &AppHandle) -> Result<(), String> {
show(handle, true) show(handle, true).await
} }
+1 -1
View File
@@ -9,7 +9,7 @@ struct SplashscreenState {
opened_at: Instant, opened_at: Instant,
} }
pub fn open(handle: &AppHandle) -> Result<(), String> { pub async fn open(handle: &AppHandle) -> Result<(), String> {
tauri::WebviewWindowBuilder::new(handle, WINDOW_LABEL, WebviewUrl::App("/splash.html".into())) tauri::WebviewWindowBuilder::new(handle, WINDOW_LABEL, WebviewUrl::App("/splash.html".into()))
.title("Friendolls") .title("Friendolls")
.inner_size(500.0, 290.0) .inner_size(500.0, 290.0)