diff --git a/clients/desktop/src-tauri/src/lib.rs b/clients/desktop/src-tauri/src/lib.rs index d3c9f3d..0515f1e 100644 --- a/clients/desktop/src-tauri/src/lib.rs +++ b/clients/desktop/src-tauri/src/lib.rs @@ -59,9 +59,15 @@ async fn start_sync(state: State<'_, AppState>) -> Result, String> { #[tauri::command] async fn delta_sync(state: State<'_, AppState>) -> Result, String> { - let mut engine_guard = state.sync_engine.lock().unwrap(); - let engine = engine_guard.as_mut().ok_or("Sync nicht gestartet")?; - engine.delta_sync().await + // Extract engine from state, dropping the MutexGuard before .await + let mut engine = { + let mut guard = state.sync_engine.lock().unwrap(); + guard.take().ok_or("Sync nicht gestartet")? + }; + let result = engine.delta_sync().await; + // Put engine back + *state.sync_engine.lock().unwrap() = Some(engine); + result } #[tauri::command]