aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-util
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-07 11:10:52 +0100
committerFlorian Dold <florian@dold.me>2024-03-07 11:10:52 +0100
commit466e2b7643692aa6b7f76a193b84775008e17350 (patch)
treedd3f9a0b67765e2c7ea6b97c2a7acbbcac71d4b7 /packages/taler-util
parent8eb3e505be967afde0053d5a392e8c6877d8f1dd (diff)
downloadwallet-core-466e2b7643692aa6b7f76a193b84775008e17350.tar.gz
wallet-core-466e2b7643692aa6b7f76a193b84775008e17350.tar.bz2
wallet-core-466e2b7643692aa6b7f76a193b84775008e17350.zip
wallet-core: improve insufficient balance reporting
Diffstat (limited to 'packages/taler-util')
-rw-r--r--packages/taler-util/src/errors.ts6
-rw-r--r--packages/taler-util/src/wallet-types.ts14
2 files changed, 13 insertions, 7 deletions
diff --git a/packages/taler-util/src/errors.ts b/packages/taler-util/src/errors.ts
index c4733a194..3ada34d63 100644
--- a/packages/taler-util/src/errors.ts
+++ b/packages/taler-util/src/errors.ts
@@ -25,7 +25,7 @@
*/
import {
AbsoluteTime,
- PayMerchantInsufficientBalanceDetails,
+ PaymentInsufficientBalanceDetails,
TalerErrorCode,
TalerErrorDetail,
TransactionType,
@@ -132,10 +132,10 @@ export interface DetailsMap {
kycUrl: string;
};
[TalerErrorCode.WALLET_DEPOSIT_GROUP_INSUFFICIENT_BALANCE]: {
- insufficientBalanceDetails: PayMerchantInsufficientBalanceDetails;
+ insufficientBalanceDetails: PaymentInsufficientBalanceDetails;
};
[TalerErrorCode.WALLET_PEER_PUSH_PAYMENT_INSUFFICIENT_BALANCE]: {
- insufficientBalanceDetails: PayMerchantInsufficientBalanceDetails;
+ insufficientBalanceDetails: PaymentInsufficientBalanceDetails;
};
[TalerErrorCode.WALLET_REFRESH_GROUP_INCOMPLETE]: {
numErrors: number;
diff --git a/packages/taler-util/src/wallet-types.ts b/packages/taler-util/src/wallet-types.ts
index cb4374648..8be8fc4a0 100644
--- a/packages/taler-util/src/wallet-types.ts
+++ b/packages/taler-util/src/wallet-types.ts
@@ -833,10 +833,12 @@ export const codecForPreparePayResultPaymentPossible =
)
.build("PreparePayResultPaymentPossible");
+export interface BalanceDetails {}
+
/**
* Detailed reason for why the wallet's balance is insufficient.
*/
-export interface PayMerchantInsufficientBalanceDetails {
+export interface PaymentInsufficientBalanceDetails {
/**
* Amount requested by the merchant.
*/
@@ -867,6 +869,8 @@ export interface PayMerchantInsufficientBalanceDetails {
*/
balanceMerchantDepositable: AmountString;
+ balanceExchangeDepositable: AmountString;
+
/**
* Maximum effective amount that the wallet can spend,
* when all fees are paid by the wallet.
@@ -877,19 +881,21 @@ export interface PayMerchantInsufficientBalanceDetails {
[url: string]: {
balanceAvailable: AmountString;
balanceMaterial: AmountString;
+ balanceExchangeDepositable: AmountString;
};
};
}
export const codecForPayMerchantInsufficientBalanceDetails =
- (): Codec<PayMerchantInsufficientBalanceDetails> =>
- buildCodecForObject<PayMerchantInsufficientBalanceDetails>()
+ (): Codec<PaymentInsufficientBalanceDetails> =>
+ buildCodecForObject<PaymentInsufficientBalanceDetails>()
.property("amountRequested", codecForAmountString())
.property("balanceAgeAcceptable", codecForAmountString())
.property("balanceAvailable", codecForAmountString())
.property("balanceMaterial", codecForAmountString())
.property("balanceMerchantAcceptable", codecForAmountString())
.property("balanceMerchantDepositable", codecForAmountString())
+ .property("balanceExchangeDepositable", codecForAmountString())
.property("perExchange", codecForAny())
.property("maxEffectiveSpendAmount", codecForAmountString())
.build("PayMerchantInsufficientBalanceDetails");
@@ -981,7 +987,7 @@ export interface PreparePayResultInsufficientBalance {
contractTerms: MerchantContractTerms;
amountRaw: AmountString;
talerUri: string;
- balanceDetails: PayMerchantInsufficientBalanceDetails;
+ balanceDetails: PaymentInsufficientBalanceDetails;
}
export interface PreparePayResultAlreadyConfirmed {