taler-typescript-core

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

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:
Mpackages/taler-wallet-core/src/refresh.ts | 13++++++++++++-
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)}`);