commit 81644e3d24ff350636955ef1f518c0f50ba05278
parent 7ea4ae8015e945c66e82f57d3834196fd2d215b7
Author: Florian Dold <dold@taler.net>
Date: Sun, 20 Sep 2026 00:27:51 +0200
wallet-cli: show abort and failure reasons in one-line history
Diffstat:
2 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/packages/taler-wallet-cli/src/transactions-pretty.test.ts b/packages/taler-wallet-cli/src/transactions-pretty.test.ts
@@ -19,6 +19,7 @@ import {
TransactionMajorState,
TransactionMinorState,
TransactionType,
+ TalerErrorCode,
} from "@gnu-taler/taler-util";
import assert from "node:assert";
import { test } from "node:test";
@@ -121,3 +122,18 @@ test("the oneline view stays compact", () => {
"#payment:7 payment KUDOS:5.01 [dialog:proposed] — Lunch — The Café — Next: the merchant's offer is waiting to be accepted",
]);
});
+
+test("one-line transactions include durable abort and failure reasons", () => {
+ const lines = formatPrettyTransaction(
+ makeTx({
+ txState: { major: TransactionMajorState.Failed },
+ abortReason: { code: TalerErrorCode.WALLET_TRANSACTION_ABORTED_BY_USER },
+ failReason: { code: TalerErrorCode.WALLET_TRANSACTION_RECOVERY_FAILED },
+ }),
+ { actionable: false } as never,
+ false,
+ true,
+ );
+ assert.match(lines[0], /Aborted:.*WALLET_TRANSACTION_ABORTED_BY_USER/);
+ assert.match(lines[0], /Failed:.*WALLET_TRANSACTION_RECOVERY_FAILED/);
+});
diff --git a/packages/taler-wallet-cli/src/transactions-pretty.ts b/packages/taler-wallet-cli/src/transactions-pretty.ts
@@ -124,6 +124,12 @@ export function formatPrettyTransaction(
if (tx.error != null) {
parts.push(`Error: ${summarizeTalerErrorDetail(tx.error)}`);
}
+ if (tx.abortReason != null) {
+ parts.push(`Aborted: ${summarizeTalerErrorDetail(tx.abortReason)}`);
+ }
+ if (tx.failReason != null) {
+ parts.push(`Failed: ${summarizeTalerErrorDetail(tx.failReason)}`);
+ }
return [parts.join(" — ")];
}