commit 7de5328fa605c4cfd129fba4e71914c73f55d5ff
parent 903f1d0cca8f0ccce8aa7a69950e7b10325d0d73
Author: Florian Dold <florian@dold.me>
Date: Thu, 11 Dec 2025 16:25:50 +0100
wallet-core: remove confusing duplicate exchange list item error field
Diffstat:
3 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/packages/taler-harness/src/integrationtests/test-exchange-master-pub-change.ts b/packages/taler-harness/src/integrationtests/test-exchange-master-pub-change.ts
@@ -25,14 +25,14 @@ import {
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { defaultCoinConfig } from "../harness/denomStructures.js";
import {
+ createSimpleTestkudosEnvironmentV3,
+ withdrawViaBankV3,
+} from "../harness/environments.js";
+import {
ExchangeService,
GlobalTestState,
setupDb,
} from "../harness/harness.js";
-import {
- createSimpleTestkudosEnvironmentV3,
- withdrawViaBankV3,
-} from "../harness/environments.js";
/**
* Test the wallet's behavior when the exchange switches to a completely
@@ -89,7 +89,7 @@ export async function runExchangeMasterPubChangeTest(
walletClient.call(WalletApiOperation.UpdateExchangeEntry, {
exchangeBaseUrl: exchange.baseUrl,
force: true,
- })
+ }),
);
console.log("updateExchangeEntry err:", j2s(err));
@@ -106,7 +106,7 @@ export async function runExchangeMasterPubChangeTest(
ExchangeUpdateStatus.UnavailableUpdate,
);
t.assertDeepEqual(
- exchangesList.exchanges[0].unavailableReason?.code,
+ exchangesList.exchanges[0].lastUpdateErrorInfo?.error.code,
TalerErrorCode.WALLET_EXCHANGE_ENTRY_UPDATE_CONFLICT,
);
}
diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts
@@ -1821,8 +1821,6 @@ export interface ExchangeListItem {
* to update the exchange info.
*/
lastUpdateErrorInfo?: OperationErrorInfo;
-
- unavailableReason?: TalerErrorDetail;
}
export interface ContactEntry {
diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts
@@ -66,7 +66,6 @@ import {
ListExchangesRequest,
Logger,
NotificationType,
- OperationErrorInfo,
Recoup,
RefreshReason,
ScopeInfo,
@@ -483,12 +482,6 @@ async function makeExchangeListItem(
reserveRec: ReserveRecord | undefined,
lastError: TalerErrorDetail | undefined,
): Promise<ExchangeListItem> {
- const lastUpdateErrorInfo: OperationErrorInfo | undefined = lastError
- ? {
- error: lastError,
- }
- : undefined;
-
let scopeInfo: ScopeInfo | undefined = undefined;
if (exchangeDetails) {
@@ -529,19 +522,26 @@ async function makeExchangeListItem(
paytoUris: exchangeDetails?.wireInfo.accounts.map((x) => x.payto_uri) ?? [],
bankComplianceLanguage: exchangeDetails?.bankComplianceLanguage,
lastUpdateTimestamp: timestampOptionalPreciseFromDb(r.lastUpdate),
- lastUpdateErrorInfo,
scopeInfo: scopeInfo ?? {
type: ScopeType.Exchange,
currency: "UNKNOWN",
url: r.baseUrl,
},
};
- switch (listItem.exchangeUpdateStatus) {
- case ExchangeUpdateStatus.UnavailableUpdate:
- if (r.unavailableReason) {
- listItem.unavailableReason = r.unavailableReason;
- }
- break;
+ if (lastError) {
+ listItem.lastUpdateErrorInfo = {
+ error: lastError,
+ };
+ } else {
+ switch (listItem.exchangeUpdateStatus) {
+ case ExchangeUpdateStatus.UnavailableUpdate:
+ if (r.unavailableReason) {
+ listItem.lastUpdateErrorInfo = {
+ error: r.unavailableReason,
+ };
+ }
+ break;
+ }
}
return listItem;
}