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 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,

View File

@@ -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,
}
}

View File

@@ -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 {