gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] 02/02: calculate deposit wire transfer


From: gnunet
Subject: [taler-wallet-core] 02/02: calculate deposit wire transfer
Date: Fri, 31 Mar 2023 19:52:09 +0200

This is an automated email from the git hooks/post-receive script.

sebasjm pushed a commit to branch master
in repository wallet-core.

commit 0f3b38745b7214abbbe638410a74fe5405ca24bb
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Fri Mar 31 14:51:58 2023 -0300

    calculate deposit wire transfer
---
 .../src/wallet/Transaction.tsx                     | 45 ++++++++++++++++------
 1 file changed, 33 insertions(+), 12 deletions(-)

diff --git a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx 
b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
index d95b10297..58e50e7b6 100644
--- a/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/Transaction.tsx
@@ -1571,6 +1571,38 @@ function RefundDetails({ amount }: { amount: 
AmountWithFee }): VNode {
   );
 }
 
+type AmountAmountByWireTransferByWire = {
+  id: string;
+  amount: string;
+}[];
+
+function calculateAmountByWireTransfer(
+  state: TransactionDeposit["trackingState"],
+): AmountAmountByWireTransferByWire {
+  const allTracking = Object.values(state ?? {});
+
+  //group tracking by wtid, sum amounts
+  const trackByWtid = allTracking.reduce((prev, cur) => {
+    const fee = Amounts.parseOrThrow(cur.wireFee);
+    const raw = Amounts.parseOrThrow(cur.amountRaw);
+    const total = !prev[cur.wireTransferId]
+      ? raw
+      : Amounts.add(prev[cur.wireTransferId].total, raw).amount;
+
+    prev[cur.wireTransferId] = {
+      total,
+      fee,
+    };
+    return prev;
+  }, {} as Record<string, { total: AmountJson; fee: AmountJson }>);
+
+  //remove wire fee from total amount
+  return Object.entries(trackByWtid).map(([id, info]) => ({
+    id,
+    amount: Amounts.stringify(Amounts.sub(info.total, info.fee).amount),
+  }));
+}
+
 function TrackingDepositDetails({
   trackingState,
 }: {
@@ -1578,18 +1610,7 @@ function TrackingDepositDetails({
 }): VNode {
   const { i18n } = useTranslationContext();
 
-  const trackByWtid = Object.values(trackingState ?? {}).reduce((prev, cur) => 
{
-    const am = Amounts.parseOrThrow(cur.amountEffective);
-    const sum = !prev[cur.wireTransferId]
-      ? am
-      : Amounts.add(prev[cur.wireTransferId], am).amount;
-    prev[cur.wireTransferId] = sum;
-    return prev;
-  }, {} as Record<string, AmountJson>);
-  const wireTransfers = Object.entries(trackByWtid).map(([id, amountJson]) => 
({
-    id,
-    amount: Amounts.stringify(amountJson),
-  }));
+  const wireTransfers = calculateAmountByWireTransfer(trackingState);
 
   return (
     <PurchaseDetailsTable>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]