update insert_private_account_data to take account kind instead of identifier

This commit is contained in:
Sergio Chouhy 2026-05-04 20:12:54 -03:00
parent 71ad4e0c85
commit 7d5e1492c4
2 changed files with 18 additions and 11 deletions

View File

@ -11,6 +11,7 @@ use key_protocol::{
}; };
use log::debug; use log::debug;
use nssa::program::Program; use nssa::program::Program;
use nssa_core::PrivateAccountKind;
use crate::config::{InitialAccountData, Label, PersistentAccountData, WalletConfig}; use crate::config::{InitialAccountData, Label, PersistentAccountData, WalletConfig};
@ -190,10 +191,11 @@ impl WalletChainStore {
pub fn insert_private_account_data( pub fn insert_private_account_data(
&mut self, &mut self,
account_id: nssa::AccountId, account_id: nssa::AccountId,
identifier: nssa_core::Identifier, kind: &PrivateAccountKind,
account: nssa_core::account::Account, account: nssa_core::account::Account,
) { ) {
debug!("inserting at address {account_id}, this account {account:?}"); debug!("inserting at address {account_id}, this account {account:?}");
let identifier = kind.identifier();
// Update default accounts if present // Update default accounts if present
if let Entry::Occupied(mut entry) = self if let Entry::Occupied(mut entry) = self
@ -237,8 +239,13 @@ impl WalletChainStore {
} else { } else {
// Node not yet in account_id_map — find it by checking all nodes // Node not yet in account_id_map — find it by checking all nodes
for (ci, node) in &mut self.user_data.private_key_tree.key_map { for (ci, node) in &mut self.user_data.private_key_tree.key_map {
let expected_id = let npk = &node.value.0.nullifier_public_key;
nssa::AccountId::from((&node.value.0.nullifier_public_key, identifier)); let expected_id = match kind {
PrivateAccountKind::Account(id) => nssa::AccountId::from((npk, *id)),
PrivateAccountKind::Pda { program_id, seed, identifier: id } => {
nssa::AccountId::for_private_pda(program_id, seed, npk, *id)
}
};
if expected_id == account_id { if expected_id == account_id {
if let Some((_, acc)) = if let Some((_, acc)) =
node.value.1.iter_mut().find(|(id, _)| *id == identifier) node.value.1.iter_mut().find(|(id, _)| *id == identifier)

View File

@ -284,7 +284,7 @@ impl WalletCore {
.nullifier_public_key; .nullifier_public_key;
let account_id = AccountId::from((&npk, identifier)); let account_id = AccountId::from((&npk, identifier));
self.storage self.storage
.insert_private_account_data(account_id, identifier, Account::default()); .insert_private_account_data(account_id, &PrivateAccountKind::Account(identifier), Account::default());
(account_id, cci) (account_id, cci)
} }
@ -371,7 +371,7 @@ impl WalletCore {
println!("Received new acc {res_acc:#?}"); println!("Received new acc {res_acc:#?}");
self.storage self.storage
.insert_private_account_data(*acc_account_id, kind.identifier(), res_acc); .insert_private_account_data(*acc_account_id, &kind, res_acc);
} }
AccDecodeData::Skip => {} AccDecodeData::Skip => {}
} }
@ -547,27 +547,27 @@ impl WalletCore {
) )
.map(|(kind, res_acc)| { .map(|(kind, res_acc)| {
let npk = &key_chain.nullifier_public_key; let npk = &key_chain.nullifier_public_key;
let (account_id, identifier) = match kind { let account_id = match &kind {
PrivateAccountKind::Account(identifier) => { PrivateAccountKind::Account(identifier) => {
(nssa::AccountId::from((npk, identifier)), identifier) nssa::AccountId::from((npk, *identifier))
} }
PrivateAccountKind::Pda { program_id, seed, identifier } => { PrivateAccountKind::Pda { program_id, seed, identifier } => {
(nssa::AccountId::for_private_pda(&program_id, &seed, npk, identifier), identifier) nssa::AccountId::for_private_pda(program_id, seed, npk, *identifier)
} }
}; };
(account_id, identifier, res_acc) (account_id, kind, res_acc)
}) })
}) })
.collect::<Vec<_>>() .collect::<Vec<_>>()
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
for (affected_account_id, identifier, new_acc) in affected_accounts { for (affected_account_id, kind, new_acc) in affected_accounts {
info!( info!(
"Received new account for account_id {affected_account_id:#?} with account object {new_acc:#?}" "Received new account for account_id {affected_account_id:#?} with account object {new_acc:#?}"
); );
self.storage self.storage
.insert_private_account_data(affected_account_id, identifier, new_acc); .insert_private_account_data(affected_account_id, &kind, new_acc);
} }
} }