taler-typescript-core

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

commit 93ea97532b11cfd98eb9bc841c59478b057675ca
parent 3b82b22828ce33fcebdec5f479397ff08086130f
Author: Florian Dold <florian@dold.me>
Date:   Sun, 24 Aug 2025 22:22:25 +0200

wallet-core: dev experiment for noFees flag

Diffstat:
Mpackages/taler-wallet-core/src/dev-experiments.ts | 15+++++++++++++++
Mpackages/taler-wallet-core/src/exchanges.ts | 11++++++++++-
Mpackages/taler-wallet-core/src/wallet.ts | 4++++
3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/packages/taler-wallet-core/src/dev-experiments.ts b/packages/taler-wallet-core/src/dev-experiments.ts @@ -267,6 +267,21 @@ export async function applyDevExperiment( }); return; } + case "pretend-no-fees": { + const setVal = parsedUri.query?.get("val"); + let v: boolean; + if (setVal == null) { + v = true; + } else if (setVal === "1") { + v = true; + } else if (setVal === "0") { + v = false; + } else { + throw Error("invalid val"); + } + wex.ws.devExperimentState.pretendNoFees = v; + return; + } case "flag-confirm-pay-no-wait": { const setVal = parsedUri.query?.get("val"); if (setVal === "0") { diff --git a/packages/taler-wallet-core/src/exchanges.ts b/packages/taler-wallet-core/src/exchanges.ts @@ -473,6 +473,7 @@ function getKycStatusFromReserveStatus( } async function makeExchangeListItem( + wex: WalletExecutionContext, tx: WalletDbReadOnlyTransaction< ["globalCurrencyExchanges", "globalCurrencyAuditors"] >, @@ -498,10 +499,16 @@ async function makeExchangeListItem( ? getKycStatusFromReserveStatus(reserveRec.status) : undefined; + let noFees = r.noFees ?? false; + + if (wex.ws.devExperimentState.pretendNoFees) { + noFees = true; + } + const listItem: ExchangeListItem = { exchangeBaseUrl: r.baseUrl, masterPub: exchangeDetails?.masterPublicKey, - noFees: r.noFees ?? false, + noFees, peerPaymentsDisabled: r.peerPaymentsDisabled ?? false, currency: exchangeDetails?.currency ?? r.presetCurrencyHint ?? "UNKNOWN", exchangeUpdateStatus: getExchangeUpdateStatusFromRecord(r), @@ -601,6 +608,7 @@ export async function lookupExchangeByUri( checkDbInvariant(!!reserveRec, "reserve record not found"); } return await makeExchangeListItem( + wex, tx, exchangeRec, exchangeDetails, @@ -2793,6 +2801,7 @@ export async function listExchanges( } } const li = await makeExchangeListItem( + wex, tx, exchangeRec, exchangeDetails, diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts @@ -2639,6 +2639,10 @@ export class Wallet { export interface DevExperimentState { blockRefreshes?: boolean; + /** + * Pretend that exchanges have no fees. + */ + pretendNoFees?: boolean; merchantDepositInsufficient?: boolean; /** Map from base URL to faked version for /config or /keys */ fakeProtoVer?: Map<