diff options
Diffstat (limited to '')
| -rw-r--r-- | src/views/login_page.rs | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/views/login_page.rs b/src/views/login_page.rs index 2edd4b5..d1bb29a 100644 --- a/src/views/login_page.rs +++ b/src/views/login_page.rs @@ -1,9 +1,15 @@ +// SPDX-FileCopyrightText: 2025 cel <cel@bunny.garden> +// +// SPDX-License-Identifier: AGPL-3.0-or-later + use std::{str::FromStr, sync::Arc}; -use filamento::{db::Db, error::{CommandError, ConnectionError}, files::{opfs::OPFSError, FilesMem, FilesOPFS}, UpdateMessage}; +use filamento::{ + db::Db, error::{CommandError, ConnectionError, DatabaseOpenError}, files::{opfs::OPFSError, FilesMem, FilesOPFS}, UpdateMessage +}; use jid::JID; -use thiserror::Error; use leptos::prelude::*; +use thiserror::Error; use tokio::sync::mpsc::Receiver; use tracing::debug; @@ -21,6 +27,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), } @@ -79,10 +87,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; @@ -113,9 +128,7 @@ pub fn LoginPage( if *connect_on_login.read_untracked() { match client.connect().await { - Ok(r) => { - resource.set(Some(r)) - } + Ok(r) => resource.set(Some(r)), Err(e) => { set_error.set(Some(e.into())); set_login_pending.set(false); |
