43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use crate::get_app_handle;
|
|
use crate::init::lifecycle::validate_server_health;
|
|
use crate::services::auth::get_session_token;
|
|
use crate::services::session::construct_user_session;
|
|
use tracing::info;
|
|
|
|
#[tauri::command]
|
|
#[specta::specta]
|
|
pub fn quit_app() -> Result<(), String> {
|
|
let app_handle = get_app_handle();
|
|
app_handle.exit(0);
|
|
Ok(())
|
|
}
|
|
|
|
#[tauri::command]
|
|
#[specta::specta]
|
|
pub fn restart_app() {
|
|
let app_handle = get_app_handle();
|
|
app_handle.restart();
|
|
}
|
|
|
|
/// Attempt to re-establish the user session without restarting the app.
|
|
///
|
|
/// Validates server health, checks for a valid session token,
|
|
/// then reconstructs the user session (re-fetches app data + WebSocket).
|
|
#[tauri::command]
|
|
#[specta::specta]
|
|
pub async fn retry_connection() -> Result<(), String> {
|
|
info!("Retrying connection...");
|
|
|
|
validate_server_health()
|
|
.await
|
|
.map_err(|e| format!("Server health check failed: {}", e))?;
|
|
|
|
if get_session_token().await.is_none() {
|
|
return Err("No valid session token. Please restart and log in again.".to_string());
|
|
}
|
|
|
|
construct_user_session().await;
|
|
info!("Connection retry succeeded");
|
|
Ok(())
|
|
}
|