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