diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-09-01 19:56:08 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-09-01 19:56:08 +0530 |
commit | 7f4ebca0c4330805ea8f3821dba075b34dd2be58 (patch) | |
tree | 39e9c0994969565ab9a227494beaf5e830315e9a | |
parent | 62406304d9a81a08797c09f5151de74d8ca43fe8 (diff) |
validation
-rw-r--r-- | packages/taler-wallet-core/src/operations/refund.ts | 15 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/talerTypes.ts | 12 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/types/walletTypes.ts | 30 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/util/codec.ts | 20 |
4 files changed, 45 insertions, 32 deletions
diff --git a/packages/taler-wallet-core/src/operations/refund.ts b/packages/taler-wallet-core/src/operations/refund.ts index 787d2bb4c..373e17a10 100644 --- a/packages/taler-wallet-core/src/operations/refund.ts +++ b/packages/taler-wallet-core/src/operations/refund.ts @@ -28,6 +28,7 @@ import { TalerErrorDetails, RefreshReason, CoinPublicKey, + ApplyRefundResponse, } from "../types/walletTypes"; import { Stores, @@ -323,20 +324,6 @@ export interface RefundSummary { amountRefundGone: AmountJson; } -export interface ApplyRefundResponse { - contractTermsHash: string; - - proposalId: string; - - amountEffectivePaid: AmountString; - - amountRefundGranted: AmountString; - - amountRefundGone: AmountString; - - pendingAtExchange: boolean; -} - /** * Accept a refund, return the contract hash for the contract * that was involved in the refund. diff --git a/packages/taler-wallet-core/src/types/talerTypes.ts b/packages/taler-wallet-core/src/types/talerTypes.ts index b9e7fae4a..b1061a1ae 100644 --- a/packages/taler-wallet-core/src/types/talerTypes.ts +++ b/packages/taler-wallet-core/src/types/talerTypes.ts @@ -985,7 +985,7 @@ export const codecForBankWithdrawalOperationPostResponse = (): Codec< BankWithdrawalOperationPostResponse > => buildCodecForObject<BankWithdrawalOperationPostResponse>() - .property("transfer_done", codecForBoolean) + .property("transfer_done", codecForBoolean()) .build("BankWithdrawalOperationPostResponse"); export type AmountString = string; @@ -1189,7 +1189,7 @@ export const codecForProposal = (): Codec<Proposal> => export const codecForCheckPaymentResponse = (): Codec<CheckPaymentResponse> => buildCodecForObject<CheckPaymentResponse>() .property("order_status", codecForString()) - .property("refunded", codecOptional(codecForBoolean)) + .property("refunded", codecOptional(codecForBoolean())) .property("refunded_amount", codecOptional(codecForString())) .property("contract_terms", codecOptional(codecForAny())) .property("taler_pay_uri", codecOptional(codecForString())) @@ -1200,9 +1200,9 @@ export const codecForWithdrawOperationStatusResponse = (): Codec< WithdrawOperationStatusResponse > => buildCodecForObject<WithdrawOperationStatusResponse>() - .property("selection_done", codecForBoolean) - .property("transfer_done", codecForBoolean) - .property("aborted", codecForBoolean) + .property("selection_done", codecForBoolean()) + .property("transfer_done", codecForBoolean()) + .property("aborted", codecForBoolean()) .property("amount", codecForString()) .property("sender_wire", codecOptional(codecForString())) .property("suggested_exchange", codecOptional(codecForString())) @@ -1298,7 +1298,7 @@ export const codecForMerchantOrderStatusPaid = (): Codec< > => buildCodecForObject<MerchantOrderStatusPaid>() .property("refund_amount", codecForString()) - .property("refunded", codecForBoolean) + .property("refunded", codecForBoolean()) .build("MerchantOrderStatusPaid"); export const codecForMerchantOrderRefundPickupResponse = (): Codec< diff --git a/packages/taler-wallet-core/src/types/walletTypes.ts b/packages/taler-wallet-core/src/types/walletTypes.ts index 89c8b4a8b..dbaefae3b 100644 --- a/packages/taler-wallet-core/src/types/walletTypes.ts +++ b/packages/taler-wallet-core/src/types/walletTypes.ts @@ -180,10 +180,10 @@ export interface BalancesResponse { export const codecForBalance = (): Codec<Balance> => buildCodecForObject<Balance>() .property("available", codecForString()) - .property("hasPendingTransactions", codecForBoolean) + .property("hasPendingTransactions", codecForBoolean()) .property("pendingIncoming", codecForString()) .property("pendingOutgoing", codecForString()) - .property("requiresUserInput", codecForBoolean) + .property("requiresUserInput", codecForBoolean()) .build("Balance"); export const codecForBalancesResponse = (): Codec<BalancesResponse> => @@ -413,7 +413,7 @@ export const codecForPreparePayResultAlreadyConfirmed = (): Codec< ) .property("amountEffective", codecForAmountString()) .property("amountRaw", codecForAmountString()) - .property("paid", codecForBoolean) + .property("paid", codecForBoolean()) .property("contractTerms", codecForAny()) .property("contractTermsHash", codecForString()) .build("PreparePayResultAlreadyConfirmed"); @@ -843,3 +843,27 @@ export const codecForWithdrawTestBalance = (): Codec< .property("bankBaseUrl", codecForString()) .property("exchangeBaseUrl", codecForString()) .build("WithdrawTestBalanceRequest"); + +export interface ApplyRefundResponse { + contractTermsHash: string; + + proposalId: string; + + amountEffectivePaid: AmountString; + + amountRefundGranted: AmountString; + + amountRefundGone: AmountString; + + pendingAtExchange: boolean; +} + +export const codecForApplyRefundResponse = (): Codec<ApplyRefundResponse> => + buildCodecForObject<ApplyRefundResponse>() + .property("amountEffectivePaid", codecForAmountString()) + .property("amountRefundGone", codecForAmountString()) + .property("amountRefundGranted", codecForAmountString()) + .property("contractTermsHash", codecForString()) + .property("pendingAtExchange", codecForBoolean()) + .property("proposalId", codecForString()) + .build("ApplyRefundResponse"); diff --git a/packages/taler-wallet-core/src/util/codec.ts b/packages/taler-wallet-core/src/util/codec.ts index 111abc38c..741a5b172 100644 --- a/packages/taler-wallet-core/src/util/codec.ts +++ b/packages/taler-wallet-core/src/util/codec.ts @@ -292,15 +292,17 @@ export function codecForNumber(): Codec<number> { /** * Return a codec for a value that must be a number. */ -export const codecForBoolean: Codec<boolean> = { - decode(x: any, c?: Context): boolean { - if (typeof x === "boolean") { - return x; - } - throw new DecodingError( - `expected boolean at ${renderContext(c)} but got ${typeof x}`, - ); - }, +export function codecForBoolean(): Codec<boolean> { + return { + decode(x: any, c?: Context): boolean { + if (typeof x === "boolean") { + return x; + } + throw new DecodingError( + `expected boolean at ${renderContext(c)} but got ${typeof x}`, + ); + }, + } }; /** |