taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 243d1cd35f8c2d1a8a4f58d92bf5c253aa4e6061
parent 6f07e1d0a05365e071e6f788abd24b89943a5c99
Author: Florian Dold <florian@dold.me>
Date:   Mon, 26 May 2025 12:37:51 +0200

wallet-core: report pending outgoing for deposit in KYC

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-kyc-wallet-deposit-abort.ts | 7+++++++
Mpackages/taler-wallet-core/src/balance.ts | 19+++++++++++++++----
2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-kyc-wallet-deposit-abort.ts b/packages/taler-harness/src/integrationtests/test-kyc-wallet-deposit-abort.ts @@ -122,6 +122,13 @@ export async function runKycWalletDepositAbortTest(t: GlobalTestState) { }, }); + { + const bal = await walletClient.call(WalletApiOperation.GetBalances, {}); + console.log(`balance in kyc: ${j2s(bal)}`); + t.assertAmountEquals(bal.balances[0].pendingOutgoing, "TESTKUDOS:5"); + t.assertAmountEquals(bal.balances[0].pendingIncoming, "TESTKUDOS:0"); + } + await walletClient.call(WalletApiOperation.AbortTransaction, { transactionId: depositResp.transactionId, }); diff --git a/packages/taler-wallet-core/src/balance.ts b/packages/taler-wallet-core/src/balance.ts @@ -133,9 +133,12 @@ function getBalanceKey(scopeInfo: ScopeInfo): string { function getScopeSortingOrder(scopeInfo: ScopeInfo): number { switch (scopeInfo.type) { - case ScopeType.Global: return 0; - case ScopeType.Auditor: return 1; - case ScopeType.Exchange: return 2; + case ScopeType.Global: + return 0; + case ScopeType.Auditor: + return 1; + case ScopeType.Exchange: + return 2; default: assertUnreachable(scopeInfo); } @@ -260,7 +263,7 @@ class BalancesStore { const balanceB = balanceStore[b]; const scopeA = getScopeSortingOrder(balanceA.scopeInfo); const scopeB = getScopeSortingOrder(balanceB.scopeInfo); - if (scopeA !== scopeB) return (scopeA - scopeB); + if (scopeA !== scopeB) return scopeA - scopeB; return a.localeCompare(b); }) .forEach((c) => { @@ -588,6 +591,10 @@ export async function getBalancesInsideTransaction( switch (dgRecord.operationStatus) { case DepositOperationStatus.SuspendedAggregateKyc: case DepositOperationStatus.PendingAggregateKyc: + case DepositOperationStatus.PendingDepositKyc: + case DepositOperationStatus.PendingDepositKycAuth: + case DepositOperationStatus.SuspendedDepositKyc: + case DepositOperationStatus.SuspendedDepositKycAuth: await balanceStore.setFlagOutgoingKyc(currency, e); } switch (dgRecord.operationStatus) { @@ -597,6 +604,10 @@ export async function getBalancesInsideTransaction( case DepositOperationStatus.SuspendedAborting: case DepositOperationStatus.SuspendedDeposit: case DepositOperationStatus.LegacySuspendedTrack: + case DepositOperationStatus.PendingDepositKyc: + case DepositOperationStatus.PendingDepositKycAuth: + case DepositOperationStatus.SuspendedDepositKyc: + case DepositOperationStatus.SuspendedDepositKycAuth: case DepositOperationStatus.PendingDeposit: { const perExchange = dgRecord.infoPerExchange; if (perExchange) {