notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit ebec367809bc9e8579a587a5a1e3c9f418704319
parent c2fbcaa5eb3125381097099c6723c3a83cd5768a
Author: kernelkind <kernelkind@gmail.com>
Date:   Sat, 15 Mar 2025 13:03:04 -0400

wallet route

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/nav.rs | 59++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mcrates/notedeck_columns/src/route.rs | 7+++++++
Mcrates/notedeck_columns/src/ui/column/header.rs | 1+
Mcrates/notedeck_columns/src/ui/wallet.rs | 4++--
4 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -20,6 +20,7 @@ use crate::{ profile::EditProfileView, search::{FocusState, SearchView}, support::SupportView, + wallet::{WalletAction, WalletView}, RelayView, View, }, Damus, @@ -27,7 +28,7 @@ use crate::{ use egui_nav::{Nav, NavAction, NavResponse, NavUiType}; use nostrdb::Transaction; -use notedeck::{AccountsAction, AppContext}; +use notedeck::{AccountsAction, AppContext, WalletState}; use tracing::error; #[allow(clippy::enum_variant_names)] @@ -38,6 +39,7 @@ pub enum RenderNavAction { NoteAction(NoteAction), ProfileAction(ProfileAction), SwitchingAction(SwitchingAction), + WalletAction(WalletAction), } pub enum SwitchingAction { @@ -194,6 +196,12 @@ impl RenderNavResponse { .router_mut(), ); } + RenderNavAction::WalletAction(wallet_action) => { + let router = get_active_columns_mut(ctx.accounts, &mut app.decks_cache) + .column_mut(col) + .router_mut(); + wallet_action.process(ctx.accounts, ctx.global_wallet, router) + } } } @@ -515,6 +523,55 @@ fn render_nav_body( } action } + Route::Wallet(wallet_type) => { + let state = match wallet_type { + notedeck::WalletType::Auto => 's: { + if let Some(cur_acc) = ctx.accounts.get_selected_account_mut() { + if let Some(wallet) = &mut cur_acc.wallet { + break 's WalletState::Wallet { + wallet, + can_create_local_wallet: false, + }; + } + } + + let Some(wallet) = &mut ctx.global_wallet.wallet else { + break 's WalletState::NoWallet { + state: &mut ctx.global_wallet.ui_state, + show_local_only: true, + }; + }; + + WalletState::Wallet { + wallet, + can_create_local_wallet: true, + } + } + notedeck::WalletType::Local => 's: { + let Some(cur_acc) = ctx.accounts.get_selected_account_mut() else { + break 's WalletState::NoWallet { + state: &mut ctx.global_wallet.ui_state, + show_local_only: false, + }; + }; + let Some(wallet) = &mut cur_acc.wallet else { + break 's WalletState::NoWallet { + state: &mut ctx.global_wallet.ui_state, + show_local_only: false, + }; + }; + + WalletState::Wallet { + wallet, + can_create_local_wallet: false, + } + } + }; + + WalletView::new(state) + .ui(ui) + .map(RenderNavAction::WalletAction) + } } } diff --git a/crates/notedeck_columns/src/route.rs b/crates/notedeck_columns/src/route.rs @@ -1,4 +1,5 @@ use enostr::{NoteId, Pubkey}; +use notedeck::WalletType; use std::fmt::{self}; use crate::{ @@ -27,6 +28,7 @@ pub enum Route { NewDeck, Search, EditDeck(usize), + Wallet(WalletType), } impl Route { @@ -107,6 +109,9 @@ impl Route { writer.write_token("deck"); writer.write_token("new"); } + Route::Wallet(_) => { + writer.write_token("wallet"); + } } } @@ -232,6 +237,7 @@ impl Route { Route::EditDeck(_) => ColumnTitle::simple("Edit Deck"), Route::EditProfile(_) => ColumnTitle::simple("Edit Profile"), Route::Search => ColumnTitle::simple("Search"), + Route::Wallet(_) => ColumnTitle::simple("Wallet"), } } } @@ -354,6 +360,7 @@ impl fmt::Display for Route { Route::EditDeck(_) => write!(f, "Edit Deck"), Route::EditProfile(_) => write!(f, "Edit Profile"), Route::Search => write!(f, "Search"), + Route::Wallet(_) => write!(f, "Wallet"), } } } diff --git a/crates/notedeck_columns/src/ui/column/header.rs b/crates/notedeck_columns/src/ui/column/header.rs @@ -464,6 +464,7 @@ impl<'a> NavTitle<'a> { Route::Search => { ui.add(ui::side_panel::search_button()); } + Route::Wallet(_) => {} } } diff --git a/crates/notedeck_columns/src/ui/wallet.rs b/crates/notedeck_columns/src/ui/wallet.rs @@ -17,7 +17,7 @@ impl WalletAction { &self, accounts: &mut Accounts, global_wallet: &mut GlobalWallet, - _router: &mut Router<Route>, + router: &mut Router<Route>, ) { match &self { WalletAction::SaveURI => { @@ -53,7 +53,7 @@ impl WalletAction { } } WalletAction::AddLocalOnly => { - // router.route_to(Route::Wallet(notedeck::WalletType::Local)); + router.route_to(Route::Wallet(notedeck::WalletType::Local)); global_wallet.ui_state.for_local_only = true; } WalletAction::Delete => {