summaryrefslogtreecommitdiffstats
path: root/src/views/login_page.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/views/login_page.rs27
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);