From dc2361edb3f401731f2099526ed93a6e963ecc45 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 19 Feb 2024 00:09:09 +0100 Subject: improve error message for templates with currency-only amount --- packages/taler-util/src/amounts.ts | 13 ++++++++++--- packages/taler-util/src/taleruri.ts | 7 ++++++- packages/taler-util/src/wallet-types.ts | 8 ++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) (limited to 'packages/taler-util/src') diff --git a/packages/taler-util/src/amounts.ts b/packages/taler-util/src/amounts.ts index c3770a393..16774f376 100644 --- a/packages/taler-util/src/amounts.ts +++ b/packages/taler-util/src/amounts.ts @@ -22,12 +22,12 @@ * Imports. */ import { - buildCodecForObject, - codecForString, - codecForNumber, Codec, Context, DecodingError, + buildCodecForObject, + codecForNumber, + codecForString, renderContext, } from "./codec.js"; import { CurrencySpecification } from "./index.js"; @@ -368,6 +368,13 @@ export class Amounts { return a.value === 0 && a.fraction === 0; } + /** + * Check whether a string is a valid currency for a Taler amount. + */ + static isCurrency(s: string): boolean { + return /^[a-zA-Z]{1,11}/.test(s); + } + /** * Parse an amount like 'EUR:20.5' for 20 Euros and 50 ct. * diff --git a/packages/taler-util/src/taleruri.ts b/packages/taler-util/src/taleruri.ts index 22846c7a4..db21f0ad6 100644 --- a/packages/taler-util/src/taleruri.ts +++ b/packages/taler-util/src/taleruri.ts @@ -75,11 +75,16 @@ export interface PayUriResult { noncePriv?: string; } +export type TemplateParams = { + amount?: string; + summary?: string; +} + export interface PayTemplateUriResult { type: TalerUriAction.PayTemplate; merchantBaseUrl: string; templateId: string; - templateParams: Record; + templateParams: TemplateParams; } export interface WithdrawUriResult { diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts index e6a66ac9d..4e3e8ac30 100644 --- a/packages/taler-util/src/wallet-types.ts +++ b/packages/taler-util/src/wallet-types.ts @@ -46,7 +46,11 @@ import { codecOptional, renderContext, } from "./codec.js"; -import { CurrencySpecification, WithdrawalOperationStatus } from "./index.js"; +import { + CurrencySpecification, + TemplateParams, + WithdrawalOperationStatus, +} from "./index.js"; import { VersionMatchResult } from "./libtool-version.js"; import { PaytoUri } from "./payto.js"; import { AgeCommitmentProof } from "./taler-crypto.js"; @@ -1927,7 +1931,7 @@ export const codecForSharePaymentResult = (): Codec => export interface PreparePayTemplateRequest { talerPayTemplateUri: string; - templateParams?: Record; + templateParams?: TemplateParams; } export const codecForPreparePayTemplateRequest = -- cgit v1.2.3