commit f88050a49ded386ae92147643977efb5592d5cc8
parent c0a35f4a07d6cba3070a0933f2dffba75e7375cd
Author: Florian Dold <florian@dold.me>
Date: Wed, 4 Mar 2026 11:28:51 +0100
wallet-core: new dev experiments
Diffstat:
3 files changed, 54 insertions(+), 15 deletions(-)
diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts
@@ -4728,6 +4728,10 @@ export interface GetDefaultExchangesResponse {
*/
talerUri: string;
/**
+ * Currency offered by the exchange.
+ */
+ currency: string;
+ /**
* Currency spec for the currency offered
* by the exchange.
*/
diff --git a/packages/taler-wallet-core/src/dev-experiments.ts b/packages/taler-wallet-core/src/dev-experiments.ts
@@ -391,6 +391,20 @@ export async function applyDevExperiment(
wex.ws.devExperimentState.fakeChfBban = getValFlag(parsedUri);
return;
}
+ case "demo-shortcuts": {
+ const v = parsedUri.query?.get("val");
+ if (!v || v === "off") {
+ wex.ws.devExperimentState.fakeDemoShortcuts = undefined;
+ } else {
+ wex.ws.devExperimentState.fakeDemoShortcuts = v.split(",");
+ }
+ wex.ws.devExperimentState.fakeChfBban = getValFlag(parsedUri);
+ return;
+ }
+ case "default-exchange-demo": {
+ wex.ws.devExperimentState.fakeDefaultExchangeDemo = getValFlag(parsedUri);
+ return;
+ }
case "block-pay-response": {
const val = getValFlag(parsedUri);
logger.info(`setting dev experiment blockPayResponse=${val}`);
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
@@ -2056,23 +2056,40 @@ export async function handleGetDefaultExchanges(
wex: WalletExecutionContext,
_req: EmptyObject,
): Promise<GetDefaultExchangesResponse> {
- return {
- defaultExchanges: [
- {
- talerUri: "taler://withdraw-exchange/exchange.taler-ops.ch/",
- currencySpec: {
- name: "Swiss francs",
- common_amounts: ["CHF:5", "CHF:10", "CHF:25", "CHF:50"],
- num_fractional_input_digits: 2,
- num_fractional_normal_digits: 2,
- num_fractional_trailing_zero_digits: 2,
- alt_unit_names: {
- "0": "Fr.",
- "-2": "Rp.",
- },
+ const defaultExchanges: GetDefaultExchangesResponse["defaultExchanges"] = [];
+ defaultExchanges.push({
+ talerUri: "taler://withdraw-exchange/exchange.taler-ops.ch/",
+ currency: "CHF",
+ currencySpec: {
+ name: "Swiss francs",
+ common_amounts: ["CHF:5", "CHF:10", "CHF:25", "CHF:50"],
+ num_fractional_input_digits: 2,
+ num_fractional_normal_digits: 2,
+ num_fractional_trailing_zero_digits: 2,
+ alt_unit_names: {
+ "0": "Fr.",
+ "-2": "Rp.",
+ },
+ },
+ });
+ if (wex.ws.devExperimentState.fakeDefaultExchangeDemo) {
+ defaultExchanges.push({
+ talerUri: "taler://withdraw-exchange/exchange.demo.taler.net/",
+ currency: "KUDOS",
+ currencySpec: {
+ name: "Kudos",
+ common_amounts: ["KUDOS:5", "KUDOS:10", "KUDOS:25", "KUDOS:50"],
+ num_fractional_input_digits: 2,
+ num_fractional_normal_digits: 2,
+ num_fractional_trailing_zero_digits: 2,
+ alt_unit_names: {
+ "0": "ク",
},
},
- ],
+ });
+ }
+ return {
+ defaultExchanges,
};
}
@@ -3112,6 +3129,10 @@ export interface DevExperimentState {
fakeChfBban?: boolean;
+ fakeDemoShortcuts?: string[];
+
+ fakeDefaultExchangeDemo?: boolean;
+
blockPayResponse?: boolean;
/** Migration test for confirmPay */