diff options
author | Florian Dold <florian@dold.me> | 2024-02-19 00:09:09 +0100 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-02-19 00:09:20 +0100 |
commit | dc2361edb3f401731f2099526ed93a6e963ecc45 (patch) | |
tree | 05e625c3a871db60a95cc4689b6a42117a3c7c32 /packages/taler-util/src | |
parent | b55bf0779946b6a1554a687e05841d131b9951b3 (diff) | |
download | wallet-core-dc2361edb3f401731f2099526ed93a6e963ecc45.tar.xz |
improve error message for templates with currency-only amount
Diffstat (limited to 'packages/taler-util/src')
-rw-r--r-- | packages/taler-util/src/amounts.ts | 13 | ||||
-rw-r--r-- | packages/taler-util/src/taleruri.ts | 7 | ||||
-rw-r--r-- | packages/taler-util/src/wallet-types.ts | 8 |
3 files changed, 22 insertions, 6 deletions
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"; @@ -369,6 +369,13 @@ export class Amounts { } /** + * 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. * * Currency name size limit is 11 of ASCII letters 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<string, string>; + 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<SharePaymentResult> => export interface PreparePayTemplateRequest { talerPayTemplateUri: string; - templateParams?: Record<string, string>; + templateParams?: TemplateParams; } export const codecForPreparePayTemplateRequest = |