commit f0158f71b211fd0a47a7ce6b7b95d1be7be91104
parent 61e47323ab8148a63c83264a7f791800c0cd2e86
Author: kernelkind <kernelkind@gmail.com>
Date: Tue, 1 Jul 2025 14:50:32 -0400
don't expose mutable access to `UserAccount`
it's not preferable that the full mutable access is available to
`ZapWallet`, but this PR is becoming too big already
Signed-off-by: kernelkind <kernelkind@gmail.com>
Diffstat:
5 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/crates/notedeck/src/account/accounts.rs b/crates/notedeck/src/account/accounts.rs
@@ -8,7 +8,7 @@ use crate::account::relay::{
};
use crate::storage::AccountStorageWriter;
use crate::user_account::UserAccountSerializable;
-use crate::{AccountStorage, MuteFun, SingleUnkIdAction, UnknownIds, UserAccount};
+use crate::{AccountStorage, MuteFun, SingleUnkIdAction, UnknownIds, UserAccount, ZapWallet};
use enostr::{ClientMessage, FilledKeypair, Keypair, Pubkey, RelayPool};
use nostrdb::{Ndb, Note, Transaction};
@@ -180,10 +180,14 @@ impl Accounts {
self.get_selected_account().wallet.is_some()
}
- pub fn get_selected_account_mut(&mut self) -> &mut UserAccount {
+ fn get_selected_account_mut(&mut self) -> &mut UserAccount {
self.cache.selected_mut()
}
+ pub fn get_selected_wallet_mut(&mut self) -> Option<&mut ZapWallet> {
+ self.cache.selected_mut().wallet.as_mut()
+ }
+
fn get_selected_account_data(&self) -> &AccountData {
&self.cache.selected().data
}
diff --git a/crates/notedeck/src/wallet.rs b/crates/notedeck/src/wallet.rs
@@ -28,9 +28,7 @@ pub fn get_current_wallet<'a>(
accounts: &'a mut Accounts,
global_wallet: &'a mut GlobalWallet,
) -> Option<&'a mut ZapWallet> {
- let acc = accounts.get_selected_account_mut();
-
- let Some(wallet) = &mut acc.wallet else {
+ let Some(wallet) = accounts.get_selected_wallet_mut() else {
return global_wallet.wallet.as_mut();
};
diff --git a/crates/notedeck_columns/src/actionbar.rs b/crates/notedeck_columns/src/actionbar.rs
@@ -98,7 +98,7 @@ fn execute_note_action(
router_action = Some(RouterAction::route_to(Route::quote(note_id)));
}
NoteAction::Zap(zap_action) => {
- let cur_acc = accounts.get_selected_account_mut();
+ let cur_acc = accounts.get_selected_account();
let sender = cur_acc.key.pubkey;
diff --git a/crates/notedeck_columns/src/nav.rs b/crates/notedeck_columns/src/nav.rs
@@ -686,9 +686,7 @@ fn render_nav_body(
Route::Wallet(wallet_type) => {
let state = match wallet_type {
notedeck::WalletType::Auto => 's: {
- if let Some(cur_acc_wallet) =
- &mut ctx.accounts.get_selected_account_mut().wallet
- {
+ if let Some(cur_acc_wallet) = ctx.accounts.get_selected_wallet_mut() {
let default_zap_state =
get_default_zap_state(&mut cur_acc_wallet.default_zap);
break 's WalletState::Wallet {
@@ -713,8 +711,8 @@ fn render_nav_body(
}
}
notedeck::WalletType::Local => 's: {
- let cur_acc = ctx.accounts.get_selected_account_mut();
- let Some(wallet) = &mut cur_acc.wallet else {
+ let cur_acc = ctx.accounts.get_selected_wallet_mut();
+ let Some(wallet) = cur_acc else {
break 's WalletState::NoWallet {
state: &mut ctx.global_wallet.ui_state,
show_local_only: false,
diff --git a/crates/notedeck_columns/src/ui/wallet.rs b/crates/notedeck_columns/src/ui/wallet.rs
@@ -63,9 +63,8 @@ impl WalletAction {
let ui_state = &mut global_wallet.ui_state;
if ui_state.for_local_only {
ui_state.for_local_only = false;
- let cur_acc = accounts.get_selected_account_mut();
- if cur_acc.wallet.is_some() {
+ if accounts.get_selected_wallet_mut().is_some() {
return None;
}