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:
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)) {