Files
friendolls-desktop/src-tauri/src/app.rs
2025-12-18 22:51:14 +08:00

41 lines
1.1 KiB
Rust

use tracing::info;
use crate::{
services::{auth::get_tokens, scene::open_scene_window},
state::init_app_data,
system_tray::init_system_tray,
};
pub async fn start_fdoll() {
init_system_tray();
bootstrap().await;
}
async fn construct_app() {
init_app_data().await;
crate::services::ws::init_ws_client().await;
open_scene_window();
}
pub async fn bootstrap() {
match get_tokens().await {
Some(_) => {
info!("User session restored");
construct_app().await;
}
None => {
info!("No active session, user needs to authenticate");
match crate::services::auth::init_auth_code_retrieval(|| {
info!("Authentication successful, creating scene...");
tauri::async_runtime::spawn(async {
info!("Creating scene after auth success...");
construct_app().await;
});
}) {
Ok(it) => it,
Err(err) => todo!("Handle authentication error: {}", err),
};
}
}
}