notedeck

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

commit 9013a2e0675c715d70386a021c367e2eb6576102
parent f16e63cf3bceb7355f1e8b384b25488b4c3e44ab
Author: kernelkind <kernelkind@gmail.com>
Date:   Thu, 17 Apr 2025 19:32:54 -0400

propagate `DefaultZapState` to wallet ui

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

Diffstat:
Mcrates/notedeck/src/lib.rs | 2+-
Mcrates/notedeck_columns/src/nav.rs | 8+++++++-
Mcrates/notedeck_columns/src/ui/wallet.rs | 27++++++++++++++++++++++++++-
3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/crates/notedeck/src/lib.rs b/crates/notedeck/src/lib.rs @@ -64,7 +64,7 @@ pub use unknowns::{get_unknown_note_ids, NoteRefsUnkIdAction, SingleUnkIdAction, pub use urls::{supported_mime_hosted_at_url, SupportedMimeType, UrlMimes}; pub use user_account::UserAccount; pub use wallet::{ - get_wallet_for_mut, GlobalWallet, Wallet, WalletError, WalletType, WalletUIState, + get_wallet_for_mut, GlobalWallet, Wallet, WalletError, WalletType, WalletUIState, ZapWallet, }; pub use zaps::{ AnyZapState, DefaultZapError, DefaultZapMsats, NoteZapTarget, NoteZapTargetOwned, diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs @@ -19,7 +19,7 @@ use crate::{ profile::EditProfileView, search::{FocusState, SearchView}, support::SupportView, - wallet::{WalletAction, WalletState, WalletView}, + wallet::{get_default_zap_state, WalletAction, WalletState, WalletView}, RelayView, }, Damus, @@ -545,8 +545,10 @@ fn render_nav_body( notedeck::WalletType::Auto => 's: { if let Some(cur_acc) = ctx.accounts.get_selected_account_mut() { if let Some(wallet) = &mut cur_acc.wallet { + let default_zap_state = get_default_zap_state(&mut wallet.default_zap); break 's WalletState::Wallet { wallet: &mut wallet.wallet, + default_zap_state, can_create_local_wallet: false, }; } @@ -559,8 +561,10 @@ fn render_nav_body( }; }; + let default_zap_state = get_default_zap_state(&mut wallet.default_zap); WalletState::Wallet { wallet: &mut wallet.wallet, + default_zap_state, can_create_local_wallet: true, } } @@ -578,8 +582,10 @@ fn render_nav_body( }; }; + let default_zap_state = get_default_zap_state(&mut wallet.default_zap); WalletState::Wallet { wallet: &mut wallet.wallet, + default_zap_state, can_create_local_wallet: false, } } diff --git a/crates/notedeck_columns/src/ui/wallet.rs b/crates/notedeck_columns/src/ui/wallet.rs @@ -1,5 +1,8 @@ use egui::Layout; -use notedeck::{Accounts, GlobalWallet, Wallet, WalletError, WalletUIState}; +use notedeck::{ + Accounts, DefaultZapMsats, GlobalWallet, PendingDefaultZapState, Wallet, WalletError, + WalletUIState, +}; use crate::route::{Route, Router}; @@ -9,6 +12,7 @@ use super::widgets::styled_button; pub enum WalletState<'a> { Wallet { wallet: &'a mut Wallet, + default_zap_state: DefaultZapState<'a>, can_create_local_wallet: bool, }, NoWallet { @@ -17,6 +21,26 @@ pub enum WalletState<'a> { }, } +type Msats = u64; + +#[derive(Debug)] +pub enum DefaultZapState<'a> { + Pending(&'a mut PendingDefaultZapState), // User input + Valid(&'a Msats), // in milisats +} + +pub fn get_default_zap_state(default_zap: &mut DefaultZapMsats) -> DefaultZapState { + if default_zap.pending.is_rewriting { + return DefaultZapState::Pending(&mut default_zap.pending); + } + + if let Some(user_selection) = &default_zap.msats { + DefaultZapState::Valid(user_selection) + } else { + DefaultZapState::Pending(&mut default_zap.pending) + } +} + #[derive(Debug)] pub enum WalletAction { SaveURI, @@ -105,6 +129,7 @@ impl<'a> WalletView<'a> { match &mut self.state { WalletState::Wallet { wallet, + default_zap_state: _, can_create_local_wallet, } => show_with_wallet(ui, wallet, *can_create_local_wallet), WalletState::NoWallet {