feat: retry connnection on server unavailable

This commit is contained in:
DecDuck
2024-11-26 18:09:15 +11:00
parent a580a46e17
commit a53d838d05
3 changed files with 32 additions and 7 deletions

View File

@ -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<AppState>>) -> 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<User>), ()> {
let data = DB.borrow_data().unwrap();

View File

@ -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,