diff options
author | 2025-06-11 23:40:38 +0100 | |
---|---|---|
committer | 2025-06-11 23:40:38 +0100 | |
commit | cdd9c8256204b07fb2600a350cc63ea485a2a766 (patch) | |
tree | 34a54d840043d7e870eb81a8e1464480186abc18 | |
parent | adeac2e7cd93ea449de0ce30247adbd13cd7120d (diff) | |
download | macaw-web-cdd9c8256204b07fb2600a350cc63ea485a2a766.tar.gz macaw-web-cdd9c8256204b07fb2600a350cc63ea485a2a766.tar.bz2 macaw-web-cdd9c8256204b07fb2600a350cc63ea485a2a766.zip |
fix: handle DatabaseOpenError in login page
-rw-r--r-- | Cargo.lock | 1 | ||||
-rw-r--r-- | src/views/login_page.rs | 18 |
2 files changed, 13 insertions, 6 deletions
@@ -780,6 +780,7 @@ dependencies = [ "hex", "image", "jid", + "js-sys", "lampada", "reactive_stores", "rusqlite", diff --git a/src/views/login_page.rs b/src/views/login_page.rs index 9a5fc4c..3506aee 100644 --- a/src/views/login_page.rs +++ b/src/views/login_page.rs @@ -1,10 +1,7 @@ use std::{str::FromStr, sync::Arc}; use filamento::{ - UpdateMessage, - db::Db, - error::{CommandError, ConnectionError}, - files::{FilesMem, FilesOPFS, opfs::OPFSError}, + db::Db, error::{CommandError, ConnectionError, DatabaseOpenError}, files::{opfs::OPFSError, FilesMem, FilesOPFS}, UpdateMessage }; use jid::JID; use leptos::prelude::*; @@ -26,6 +23,8 @@ pub enum LoginError { InvalidJID(#[from] jid::ParseError), #[error("Connection Error: {0}")] ConnectionError(#[from] CommandError<ConnectionError>), + #[error("Failed to open database: {0}")] + DatabaseOpen(#[from] DatabaseOpenError), #[error("OPFS: {0}")] OPFS(#[from] OPFSError), } @@ -84,10 +83,17 @@ pub fn LoginPage( debug!("creating db in opfs"); Db::create_connect_and_migrate(jid.as_bare().to_string()) .await - .unwrap() } else { debug!("creating db in memory"); - Db::create_connect_and_migrate_memory().await.unwrap() + Db::create_connect_and_migrate_memory().await + }; + let db = match db { + Ok(db) => db, + Err(e) => { + set_error.set(Some(e.into())); + set_login_pending.set(false); + return; + } }; let files = if remember_me { let opfs = FilesOPFS::new(jid.as_bare().to_string()).await; |