diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 3bad3031b..d16620606 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,7 +1,34 @@ +mod auth; +mod error; + +use auth::authenticate; +use tauri::Manager; + +struct AppState { + profile: radicle::Profile, +} #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() + .setup(|app| { + let profile: radicle::Profile = match radicle::Profile::load() { + Ok(profile) => Ok::(profile), + Err(radicle::profile::Error::NotFound(path)) => Err(error::Error::WithHint { + err: anyhow::anyhow!("Radicle profile not found in '{}'.", path.display()), + hint: "To setup your radicle profile, run `rad auth`.", + } + .into()), + Err(e) => Err(error::Error::WithHint { + err: e.into(), + hint: "Could not load radicle profile", + }), + }?; + + app.manage(AppState { profile }); + + Ok(()) + }) .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_window_state::Builder::default().build()) .run(tauri::generate_context!())