taler-typescript-core

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

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:
Mpackages/taler-harness/src/integrationtests/test-exchange-master-pub-change.ts | 12++++++------
Mpackages/taler-util/src/types-taler-wallet.ts | 2--
Mpackages/taler-wallet-core/src/exchanges.ts | 28++++++++++++++--------------
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; }