diff --git a/pages/error/serverunavailable.vue b/pages/error/serverunavailable.vue index d0a2515..cfbb178 100644 --- a/pages/error/serverunavailable.vue +++ b/pages/error/serverunavailable.vue @@ -20,9 +20,15 @@ We were unable to contact your Drop instance. See if you can open it in your web browser, or contact your server admin for help.

-
+
+ Connect to different instance @@ -68,7 +74,15 @@ diff --git a/src-tauri/src/auth.rs b/src-tauri/src/auth.rs index 78da5b2..6761cec 100644 --- a/src-tauri/src/auth.rs +++ b/src-tauri/src/auth.rs @@ -1,7 +1,5 @@ use std::{ - env, - sync::Mutex, - time::{SystemTime, UNIX_EPOCH}, + borrow::BorrowMut, env, sync::Mutex, time::{SystemTime, UNIX_EPOCH} }; use log::{info, warn}; @@ -11,7 +9,7 @@ use tauri::{AppHandle, Emitter, Manager}; use url::Url; use crate::{ - db::{DatabaseAuth, DatabaseImpls}, + db::{self, DatabaseAuth, DatabaseImpls}, remote::RemoteAccessError, AppState, AppStatus, User, DB, }; @@ -185,6 +183,18 @@ pub async fn auth_initiate<'a>() -> Result<(), String> { Ok(()) } +#[tauri::command] +pub fn retry_connect(state: tauri::State<'_, Mutex>) -> Result<(), ()> { + let (app_status, user) = setup()?; + + let mut guard = state.lock().unwrap(); + guard.status = app_status; + guard.user = user; + drop(guard); + + Ok(()) +} + pub fn setup() -> Result<(AppStatus, Option), ()> { let data = DB.borrow_data().unwrap(); diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 06eef38..ce9462e 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -9,7 +9,7 @@ mod settings; mod tests; use crate::db::DatabaseImpls; -use auth::{auth_initiate, generate_authorization_header, recieve_handshake}; +use auth::{auth_initiate, generate_authorization_header, recieve_handshake, retry_connect}; use db::{add_download_dir, delete_download_dir, fetch_download_dir_stats, DatabaseInterface, DATA_ROOT_DIR}; use downloads::download_commands::*; use downloads::download_manager::DownloadManagerBuilder; @@ -120,6 +120,7 @@ pub fn run() { fetch_state, // Auth auth_initiate, + retry_connect, // Remote use_remote, gen_drop_url,