#![cfg_attr( all(not(debug_assertions), target_os = "windows"), windows_subsystem = "windows" )] use tauri::Manager; mod config; mod errors; mod clientinfo; mod ipc; mod state; mod server; use state::AppState; fn main() { let initial_state = match state::AppState::new() { Ok(state) => state, Err(e) => {eprintln!("{}", e); return;} }; tauri::Builder::default() .manage(initial_state) .invoke_handler(tauri::generate_handler![ ipc::unlock, ipc::respond, ipc::get_session_status, ipc::save_credentials, ]) .setup(|app| { let state = app.state::(); let config = state.config.read().unwrap(); let addr = std::net::SocketAddrV4::new(config.listen_addr, config.listen_port); tauri::async_runtime::spawn(server::serve(addr, app.handle())); Ok(()) }) .run(tauri::generate_context!()) .expect("error while running tauri application"); }