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>
This commit is contained in:
kernelkind
2025-07-01 14:50:32 -04:00
parent 61e47323ab
commit f0158f71b2
5 changed files with 12 additions and 13 deletions

View File

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

View File

@@ -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();
};

View File

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

View File

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

View File

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