introduce decks_cache

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2024-12-05 18:42:39 -05:00
committed by William Casarin
parent 35613f2e74
commit 69e93b0ebf
7 changed files with 176 additions and 82 deletions

View File

@@ -8,12 +8,13 @@ use uuid::Uuid;
use enostr::{ClientMessage, FilledKeypair, FullKeypair, Keypair, RelayPool};
use nostrdb::{Filter, Ndb, Note, NoteKey, Subscription, Transaction};
use crate::app::get_active_columns_mut;
use crate::decks::DecksCache;
use crate::{
column::Columns,
imgcache::ImageCache,
login_manager::AcquireKeyState,
muted::Muted,
route::{Route, Router},
route::Route,
storage::{KeyStorageResponse, KeyStorageType},
ui::{
account_login_view::{AccountLoginResponse, AccountLoginView},
@@ -230,13 +231,12 @@ pub fn render_accounts_route(
ui: &mut egui::Ui,
ndb: &Ndb,
col: usize,
columns: &mut Columns,
img_cache: &mut ImageCache,
accounts: &mut Accounts,
decks: &mut DecksCache,
login_state: &mut AcquireKeyState,
route: AccountsRoute,
) -> SingleUnkIdAction {
let router = columns.column_mut(col).router_mut();
let resp = match route {
AccountsRoute::Accounts => AccountsView::new(ndb, accounts, img_cache)
.ui(ui)
@@ -252,12 +252,15 @@ pub fn render_accounts_route(
if let Some(resp) = resp {
match resp {
AccountsRouteResponse::Accounts(response) => {
process_accounts_view_response(accounts, response, router);
process_accounts_view_response(accounts, decks, col, response);
SingleUnkIdAction::no_action()
}
AccountsRouteResponse::AddAccount(response) => {
let action = process_login_view_response(accounts, response);
let action = process_login_view_response(accounts, decks, response);
*login_state = Default::default();
let router = get_active_columns_mut(accounts, decks)
.column_mut(col)
.router_mut();
router.go_back();
action
}
@@ -268,16 +271,20 @@ pub fn render_accounts_route(
}
pub fn process_accounts_view_response(
manager: &mut Accounts,
accounts: &mut Accounts,
decks: &mut DecksCache,
col: usize,
response: AccountsViewResponse,
router: &mut Router<Route>,
) {
let router = get_active_columns_mut(accounts, decks)
.column_mut(col)
.router_mut();
match response {
AccountsViewResponse::RemoveAccount(index) => {
manager.remove_account(index);
accounts.remove_account(index);
}
AccountsViewResponse::SelectAccount(index) => {
manager.select_account(index);
accounts.select_account(index);
}
AccountsViewResponse::RouteToLogin => {
router.route_to(Route::add_account());
@@ -619,15 +626,18 @@ fn get_selected_index(accounts: &[UserAccount], keystore: &KeyStorageType) -> Op
pub fn process_login_view_response(
manager: &mut Accounts,
decks: &mut DecksCache,
response: AccountLoginResponse,
) -> SingleUnkIdAction {
let login_action = match response {
let (pubkey, login_action) = match response {
AccountLoginResponse::CreateNew => {
manager.add_account(FullKeypair::generate().to_keypair())
let kp = FullKeypair::generate().to_keypair();
(kp.pubkey, manager.add_account(kp))
}
AccountLoginResponse::LoginWith(keypair) => manager.add_account(keypair),
AccountLoginResponse::LoginWith(keypair) => (keypair.pubkey, manager.add_account(keypair)),
};
manager.select_account(login_action.switch_to_index);
decks.add_deck_default(pubkey);
login_action.unk
}