commit 5765db5ba77cd5ab8ad72f2ce8d117ee79bec809
parent 417c1d10592cba097bf4c928c160dc2278c1636c
Author: Florian Dold <florian@dold.me>
Date: Wed, 23 Apr 2025 23:54:02 +0200
wallet-core: expand run-length encoded denom list for melt request
Diffstat:
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/packages/taler-wallet-core/src/refresh.ts b/packages/taler-wallet-core/src/refresh.ts
@@ -910,6 +910,17 @@ async function refreshMelt(
sessionPublicSeed: refreshSession.sessionPublicSeed,
});
+ // Wallet stores new denoms run-length encoded,
+ // we need to expand the list of denominations
+ // for the exchange.
+ const newDenomsFlat: string[] = [];
+ for (let i = 0; i < newCoinDenoms.length; i++) {
+ const dsel = newCoinDenoms[i];
+ for (let j = 0; j < dsel.count; j++) {
+ newDenomsFlat.push(dsel.denomPubHash);
+ }
+ }
+
const reqUrl = new URL(`melt`, oldCoin.exchangeBaseUrl);
const meltReqBody: ExchangeMeltRequestV2 = {
old_coin_pub: oldCoin.coinPub,
@@ -919,7 +930,7 @@ async function refreshMelt(
refresh_seed: refreshSession.sessionPublicSeed,
confirm_sig: derived.confirmSig,
coin_evs: derived.planchets.map((x) => x.map((y) => y.coinEv)),
- denoms_h: newCoinDenoms.map((x) => x.denomPubHash),
+ denoms_h: newDenomsFlat,
value_with_fee: Amounts.stringify(derived.meltValueWithFee),
};
logger.info(`melt request body: ${j2s(meltReqBody)}`);