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.
-
+
+
retry()"
+ class="inline-flex gap-x-2 items-center text-sm text-left font-semibold leading-7 text-white"
+ >
+ Retry
+
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,