propagate DefaultZapState to wallet ui

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-04-17 19:32:54 -04:00
parent f16e63cf3b
commit 9013a2e067
3 changed files with 34 additions and 3 deletions

View File

@@ -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 urls::{supported_mime_hosted_at_url, SupportedMimeType, UrlMimes};
pub use user_account::UserAccount; pub use user_account::UserAccount;
pub use wallet::{ 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::{ pub use zaps::{
AnyZapState, DefaultZapError, DefaultZapMsats, NoteZapTarget, NoteZapTargetOwned, AnyZapState, DefaultZapError, DefaultZapMsats, NoteZapTarget, NoteZapTargetOwned,

View File

@@ -19,7 +19,7 @@ use crate::{
profile::EditProfileView, profile::EditProfileView,
search::{FocusState, SearchView}, search::{FocusState, SearchView},
support::SupportView, support::SupportView,
wallet::{WalletAction, WalletState, WalletView}, wallet::{get_default_zap_state, WalletAction, WalletState, WalletView},
RelayView, RelayView,
}, },
Damus, Damus,
@@ -545,8 +545,10 @@ fn render_nav_body(
notedeck::WalletType::Auto => 's: { notedeck::WalletType::Auto => 's: {
if let Some(cur_acc) = ctx.accounts.get_selected_account_mut() { if let Some(cur_acc) = ctx.accounts.get_selected_account_mut() {
if let Some(wallet) = &mut cur_acc.wallet { if let Some(wallet) = &mut cur_acc.wallet {
let default_zap_state = get_default_zap_state(&mut wallet.default_zap);
break 's WalletState::Wallet { break 's WalletState::Wallet {
wallet: &mut wallet.wallet, wallet: &mut wallet.wallet,
default_zap_state,
can_create_local_wallet: false, 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 { WalletState::Wallet {
wallet: &mut wallet.wallet, wallet: &mut wallet.wallet,
default_zap_state,
can_create_local_wallet: true, 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 { WalletState::Wallet {
wallet: &mut wallet.wallet, wallet: &mut wallet.wallet,
default_zap_state,
can_create_local_wallet: false, can_create_local_wallet: false,
} }
} }

View File

@@ -1,5 +1,8 @@
use egui::Layout; use egui::Layout;
use notedeck::{Accounts, GlobalWallet, Wallet, WalletError, WalletUIState}; use notedeck::{
Accounts, DefaultZapMsats, GlobalWallet, PendingDefaultZapState, Wallet, WalletError,
WalletUIState,
};
use crate::route::{Route, Router}; use crate::route::{Route, Router};
@@ -9,6 +12,7 @@ use super::widgets::styled_button;
pub enum WalletState<'a> { pub enum WalletState<'a> {
Wallet { Wallet {
wallet: &'a mut Wallet, wallet: &'a mut Wallet,
default_zap_state: DefaultZapState<'a>,
can_create_local_wallet: bool, can_create_local_wallet: bool,
}, },
NoWallet { 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)] #[derive(Debug)]
pub enum WalletAction { pub enum WalletAction {
SaveURI, SaveURI,
@@ -105,6 +129,7 @@ impl<'a> WalletView<'a> {
match &mut self.state { match &mut self.state {
WalletState::Wallet { WalletState::Wallet {
wallet, wallet,
default_zap_state: _,
can_create_local_wallet, can_create_local_wallet,
} => show_with_wallet(ui, wallet, *can_create_local_wallet), } => show_with_wallet(ui, wallet, *can_create_local_wallet),
WalletState::NoWallet { WalletState::NoWallet {