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