diff --git a/src/account_manager.rs b/src/account_manager.rs
index 0895e78..9c7db5b 100644
--- a/src/account_manager.rs
+++ b/src/account_manager.rs
@@ -1,11 +1,13 @@
use std::cmp::Ordering;
-use enostr::{FilledKeypair, Keypair};
+use enostr::{FilledKeypair, FullKeypair, Keypair};
pub use crate::user_account::UserAccount;
use crate::{
key_storage::{KeyStorage, KeyStorageResponse, KeyStorageType},
- ui::account_management::AccountManagementViewResponse,
+ ui::{
+ account_login_view::AccountLoginResponse, account_management::AccountManagementViewResponse,
+ },
};
use tracing::info;
@@ -120,7 +122,7 @@ impl AccountManager {
}
}
-pub fn process_view_response(
+pub fn process_management_view_response_stateless(
manager: &mut AccountManager,
response: AccountManagementViewResponse,
) {
@@ -131,5 +133,17 @@ pub fn process_view_response(
AccountManagementViewResponse::SelectAccount(index) => {
manager.select_account(index);
}
+ AccountManagementViewResponse::RouteToLogin => {}
+ }
+}
+
+pub fn process_login_view_response(manager: &mut AccountManager, response: AccountLoginResponse) {
+ match response {
+ AccountLoginResponse::CreateNew => {
+ manager.add_account(FullKeypair::generate().to_keypair());
+ }
+ AccountLoginResponse::LoginWith(keypair) => {
+ manager.add_account(keypair);
+ }
}
}
diff --git a/src/ui/account_management.rs b/src/ui/account_management.rs
index 499c072..ed27bd5 100644
--- a/src/ui/account_management.rs
+++ b/src/ui/account_management.rs
@@ -14,9 +14,11 @@ use super::profile_preview_controller::profile_preview_view;
pub struct AccountManagementView {}
+#[derive(Clone, Debug)]
pub enum AccountManagementViewResponse {
SelectAccount(usize),
RemoveAccount(usize),
+ RouteToLogin,
}
impl AccountManagementView {
@@ -27,7 +29,9 @@ impl AccountManagementView {
img_cache: &mut ImageCache,
) -> InnerResponse