taler-typescript-core

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

commit 9c14c275baaca83e9efa2fe30daa9bb0fe25d371
parent cab77b9dae0c74c299cd3c60ba2b17257bca27c6
Author: Florian Dold <florian@dold.me>
Date:   Wed,  3 Jun 2026 22:14:05 +0200

wallet cli: wait for refund by default with handle-uri

Diffstat:
Mpackages/taler-util/src/types-taler-wallet.ts | 6+++++-
Mpackages/taler-wallet-cli/src/index.ts | 59+++++++++++++++++++----------------------------------------
Mpackages/taler-wallet-core/src/testing.ts | 8++++++++
3 files changed, 32 insertions(+), 41 deletions(-)

diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -3885,7 +3885,11 @@ export interface TestingWaitTransactionRequest { */ requireError?: boolean; - txState: TransactionStatePattern | TransactionStatePattern[] | number; + txState: + | TransactionStatePattern + | TransactionStatePattern[] + | number + | "nonpending"; } export interface TestingGetReserveHistoryRequest { diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts @@ -117,32 +117,7 @@ async function doHandlePayTransaction( ): Promise<void> { await wallet.call(WalletApiOperation.TestingWaitTransactionState, { transactionId, - txState: [ - { - major: TransactionMajorState.Done, - minor: "*", - }, - { - major: TransactionMajorState.Dialog, - minor: "*", - }, - { - major: TransactionMajorState.Failed, - minor: "*", - }, - { - major: TransactionMajorState.Aborted, - minor: "*", - }, - { - major: TransactionMajorState.Expired, - minor: "*", - }, - { - major: TransactionMajorState.Finalizing, - minor: "*", - }, - ], + txState: "nonpending", }); const paySt = await wallet.call(WalletApiOperation.GetTransactionById, { transactionId, @@ -238,16 +213,7 @@ async function doHandlePayTransaction( console.log(`Waiting for transaction '${transactionId}' to finish`); await wallet.call(WalletApiOperation.TestingWaitTransactionState, { transactionId, - txState: [ - { - major: TransactionMajorState.Done, - minor: "*", - }, - { - major: TransactionMajorState.Finalizing, - minor: "*", - }, - ], + txState: "nonpending", }); const tx = await wallet.call(WalletApiOperation.GetTransactionById, { transactionId, @@ -1030,11 +996,24 @@ walletCli noWait: args.handleUri.noWait, }); break; - case TalerUriAction.Refund: - await wallet.client.call(WalletApiOperation.StartRefundQueryForUri, { - talerRefundUri: uri, - }); + case TalerUriAction.Refund: { + const startRes = await wallet.client.call( + WalletApiOperation.StartRefundQueryForUri, + { + talerRefundUri: uri, + }, + ); + if (!args.handleUri.noWait) { + await wallet.client.call( + WalletApiOperation.TestingWaitTransactionState, + { + transactionId: startRes.transactionId, + txState: "nonpending", + }, + ); + } break; + } case TalerUriAction.PayPush: { await cliPeerPushCredit(wallet, uri); break; diff --git a/packages/taler-wallet-core/src/testing.ts b/packages/taler-wallet-core/src/testing.ts @@ -669,6 +669,14 @@ export async function waitTransactionState( return false; } } + if (txState === "nonpending") { + switch (tx.txState.major) { + case TransactionMajorState.Pending: + return false; + default: + return true; + } + } if (Array.isArray(txState)) { for (const myState of txState) { if (matchState(tx.txState, myState)) {