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