diff --git a/crates/core/transaction/src/transaction.rs b/crates/core/transaction/src/transaction.rs index a4e5e9055c..7c9036c9b5 100644 --- a/crates/core/transaction/src/transaction.rs +++ b/crates/core/transaction/src/transaction.rs @@ -49,13 +49,12 @@ pub struct TransactionBody { #[derive(Clone, Default, Serialize, Deserialize)] #[serde(try_from = "pbt::TransactionSummary", into = "pbt::TransactionSummary")] pub struct TransactionSummary { - pub effects: Vec, + pub effects: Vec, } /// Represents an individual effect of a transaction. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -#[serde(try_from = "pbt::Effects", into = "pbt::Effects")] -pub struct Effects { +pub struct TransactionEffect { pub address: AddressView, pub balance: Balance, } @@ -612,9 +611,16 @@ impl DomainType for TransactionSummary { } impl From for pbt::TransactionSummary { - fn from(pbt: TransactionSummary) -> Self { + fn from(summary: TransactionSummary) -> Self { pbt::TransactionSummary { - effects: pbt.effects.into_iter().map(Into::into).collect(), + effects: summary + .effects + .into_iter() + .map(|effect| pbt::transaction_summary::Effects { + address: Some(effect.address.into()), + balance: Some(effect.balance.into()), + }) + .collect(), } } } @@ -626,43 +632,24 @@ impl TryFrom for TransactionSummary { let effects = pbt .effects .into_iter() - .map(TryInto::try_into) - .collect::, _>>()?; + .map(|effect| { + Ok(TransactionEffect { + address: effect + .address + .ok_or_else(|| anyhow::anyhow!("missing address field"))? + .try_into()?, + balance: effect + .balance + .ok_or_else(|| anyhow::anyhow!("missing balance field"))? + .try_into()?, + }) + }) + .collect::, anyhow::Error>>()?; Ok(Self { effects }) } } -impl DomainType for Effects { - type Proto = pbt::Effects; -} - -impl From for pbt::Effects { - fn from(effect: Effects) -> Self { - pbt::Effects { - address: Some(effect.address.into()), - balance: Some(effect.balance.into()), - } - } -} - -impl TryFrom for Effects { - type Error = anyhow::Error; - - fn try_from(pbt: pbt::Effects) -> Result { - Ok(Self { - address: pbt - .address - .ok_or_else(|| anyhow::anyhow!("missing address field"))? - .try_into()?, - balance: pbt - .balance - .ok_or_else(|| anyhow::anyhow!("missing balance field"))? - .try_into()?, - }) - } -} - impl DomainType for TransactionBody { type Proto = pbt::TransactionBody; } diff --git a/crates/core/transaction/src/view.rs b/crates/core/transaction/src/view.rs index b14ff28d07..d1f8abe08b 100644 --- a/crates/core/transaction/src/view.rs +++ b/crates/core/transaction/src/view.rs @@ -16,7 +16,7 @@ pub use transaction_perspective::TransactionPerspective; use crate::{ memo::MemoCiphertext, - transaction::{Effects, TransactionSummary}, + transaction::{TransactionEffect, TransactionSummary}, Action, DetectionData, Transaction, TransactionBody, TransactionParameters, }; @@ -111,7 +111,7 @@ impl TransactionView { address: note.address(), }; - effects.push(Effects { address, balance }); + effects.push(TransactionEffect { address, balance }); } SpendView::Opaque { spend: _ } => continue, }, @@ -127,7 +127,7 @@ impl TransactionView { address: note.address(), }; - effects.push(Effects { address, balance }); + effects.push(TransactionEffect { address, balance }); } OutputView::Opaque { output: _ } => continue, },