taler-typescript-core

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

commit 51fce810cdab4203af4282d8e3a90b79f1f23cc6
parent 3e40f83be9e0cbbac93551a172822cfa0174eccb
Author: Iván Ávalos <avalos@disroot.org>
Date:   Fri, 27 Jun 2025 18:23:59 +0200

wallet-core: fix tokenDetails perFamily calculation

Diffstat:
Mpackages/taler-wallet-core/src/tokenSelection.ts | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/packages/taler-wallet-core/src/tokenSelection.ts b/packages/taler-wallet-core/src/tokenSelection.ts @@ -24,6 +24,7 @@ import { MerchantContractInputType, MerchantContractTermsV1, MerchantContractTokenDetails, + MerchantContractTokenFamily, MerchantContractTokenKind, PaymentTokenAvailabilityDetails, } from "@gnu-taler/taler-util"; @@ -178,6 +179,8 @@ export async function selectPayTokensInTx( } const inputs = req.contractTerms.choices[req.choiceIndex].inputs; + const tokenFamilies = req.contractTerms.token_families; + const inputTokens: {[slug: string]: TokenRecord[]} = {}; for (const input of inputs) { if (input.type == MerchantContractInputType.Token) { @@ -198,6 +201,7 @@ export async function selectPayTokensInTx( return selectTokenCandidates( inputs, + tokenFamilies, inputTokens, proposal.merchantBaseUrl, ); @@ -222,6 +226,7 @@ export async function selectPayTokens( export function selectTokenCandidates( inputs: MerchantContractInput[], + tokenFamilies: {[slug: string]: MerchantContractTokenFamily}, inputTokens: {[slug: string]: TokenRecord[]}, merchantBaseUrl: string, ): SelectPayTokensResult { @@ -243,8 +248,8 @@ export function selectTokenCandidates( const tokens = inputTokens[slug]; details.tokensRequested += count; - for (const t of tokens) { - const keyHash = t.tokenIssuePubHash; + for (const key of tokenFamilies[slug].keys) { + const keyHash = encodeCrock(hashTokenIssuePub(key)); if (details.perTokenFamily[keyHash] === undefined) { details.perTokenFamily[keyHash] = { requested: count,