summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-03-07 11:46:31 +0100
committerFlorian Dold <florian@dold.me>2024-03-07 11:46:31 +0100
commit53120dfc3ec05d49fc6f94bb498c66238225dd6b (patch)
tree374a582f38bf1eb0cb3d8d0c221ffc20af886804 /packages/taler-wallet-core
parent26a2a1c094194fed84c3227bc0b91540d31637cc (diff)
downloadwallet-core-53120dfc3ec05d49fc6f94bb498c66238225dd6b.tar.gz
wallet-core-53120dfc3ec05d49fc6f94bb498c66238225dd6b.tar.bz2
wallet-core-53120dfc3ec05d49fc6f94bb498c66238225dd6b.zip
rename insufficient balance fields to work for both merchant and p2p payments
Diffstat (limited to 'packages/taler-wallet-core')
-rw-r--r--packages/taler-wallet-core/src/balance.ts30
-rw-r--r--packages/taler-wallet-core/src/coinSelection.ts18
2 files changed, 22 insertions, 26 deletions
diff --git a/packages/taler-wallet-core/src/balance.ts b/packages/taler-wallet-core/src/balance.ts
index 26d348b39..5e3562ba2 100644
--- a/packages/taler-wallet-core/src/balance.ts
+++ b/packages/taler-wallet-core/src/balance.ts
@@ -51,8 +51,6 @@
*/
import { GlobalIDB } from "@gnu-taler/idb-bridge";
import {
- AllowedAuditorInfo,
- AllowedExchangeInfo,
AmountJson,
AmountLike,
Amounts,
@@ -60,12 +58,13 @@ import {
BalanceFlag,
BalancesResponse,
GetBalanceDetailRequest,
+ j2s,
Logger,
parsePaytoUri,
ScopeInfo,
ScopeType,
} from "@gnu-taler/taler-util";
-import { findMatchingWire } from "./coinSelection.js";
+import { ExchangeRestrictionSpec, findMatchingWire } from "./coinSelection.js";
import {
DepositOperationStatus,
OPERATION_STATUS_ACTIVE_FIRST,
@@ -462,12 +461,7 @@ export async function getBalances(
export interface PaymentRestrictionsForBalance {
currency: string;
minAge: number;
- restrictExchanges:
- | {
- exchanges: AllowedExchangeInfo[];
- auditors: AllowedAuditorInfo[];
- }
- | undefined;
+ restrictExchanges: ExchangeRestrictionSpec | undefined;
restrictWireMethods: string[] | undefined;
depositPaytoUri: string | undefined;
}
@@ -504,12 +498,12 @@ export interface PaymentBalanceDetails {
/**
* Balance of type "merchant-acceptable" (see balance.ts for definition).
*/
- balanceMerchantAcceptable: AmountJson;
+ balanceReceiverAcceptable: AmountJson;
/**
* Balance of type "merchant-depositable" (see balance.ts for definition).
*/
- balanceMerchantDepositable: AmountJson;
+ balanceReceiverDepositable: AmountJson;
/**
* Balance that's depositable with the exchange.
@@ -556,12 +550,14 @@ export async function getPaymentBalanceDetailsInTx(
balanceAvailable: Amounts.zeroOfCurrency(req.currency),
balanceMaterial: Amounts.zeroOfCurrency(req.currency),
balanceAgeAcceptable: Amounts.zeroOfCurrency(req.currency),
- balanceMerchantAcceptable: Amounts.zeroOfCurrency(req.currency),
- balanceMerchantDepositable: Amounts.zeroOfCurrency(req.currency),
+ balanceReceiverAcceptable: Amounts.zeroOfCurrency(req.currency),
+ balanceReceiverDepositable: Amounts.zeroOfCurrency(req.currency),
maxEffectiveSpendAmount: Amounts.zeroOfCurrency(req.currency),
balanceExchangeDepositable: Amounts.zeroOfCurrency(req.currency),
};
+ logger.info(`computing balance details for ${j2s(req)}`);
+
const availableCoins = await tx.coinAvailability.getAll();
for (const ca of availableCoins) {
@@ -646,13 +642,13 @@ export async function getPaymentBalanceDetailsInTx(
coinAmount,
).amount;
if (merchantExchangeAcceptable) {
- d.balanceMerchantAcceptable = Amounts.add(
- d.balanceMerchantAcceptable,
+ d.balanceReceiverAcceptable = Amounts.add(
+ d.balanceReceiverAcceptable,
coinAmount,
).amount;
if (merchantExchangeDepositable) {
- d.balanceMerchantDepositable = Amounts.add(
- d.balanceMerchantDepositable,
+ d.balanceReceiverDepositable = Amounts.add(
+ d.balanceReceiverDepositable,
coinAmount,
).amount;
}
diff --git a/packages/taler-wallet-core/src/coinSelection.ts b/packages/taler-wallet-core/src/coinSelection.ts
index 98fd0dec1..50965fd6c 100644
--- a/packages/taler-wallet-core/src/coinSelection.ts
+++ b/packages/taler-wallet-core/src/coinSelection.ts
@@ -392,7 +392,7 @@ export async function reportInsufficientBalanceDetails(
): Promise<PaymentInsufficientBalanceDetails> {
const details = await getPaymentBalanceDetailsInTx(wex, tx, {
restrictExchanges: req.restrictExchanges,
- restrictWireMethods: req.wireMethod ? [req.wireMethod] : [],
+ restrictWireMethods: req.wireMethod ? [req.wireMethod] : undefined,
currency: Amounts.currencyOf(req.instructedAmount),
minAge: req.requiredMinimumAge ?? 0,
depositPaytoUri: req.depositPaytoUri,
@@ -426,11 +426,11 @@ export async function reportInsufficientBalanceDetails(
exchDet.balanceExchangeDepositable,
),
balanceAgeAcceptable: Amounts.stringify(exchDet.balanceAgeAcceptable),
- balanceMerchantAcceptable: Amounts.stringify(
- exchDet.balanceMerchantAcceptable,
+ balanceReceiverAcceptable: Amounts.stringify(
+ exchDet.balanceReceiverAcceptable,
),
- balanceMerchantDepositable: Amounts.stringify(
- exchDet.balanceMerchantDepositable,
+ balanceReceiverDepositable: Amounts.stringify(
+ exchDet.balanceReceiverDepositable,
),
maxEffectiveSpendAmount: Amounts.stringify(
exchDet.maxEffectiveSpendAmount,
@@ -443,14 +443,14 @@ export async function reportInsufficientBalanceDetails(
balanceAgeAcceptable: Amounts.stringify(details.balanceAgeAcceptable),
balanceAvailable: Amounts.stringify(details.balanceAvailable),
balanceMaterial: Amounts.stringify(details.balanceMaterial),
- balanceMerchantAcceptable: Amounts.stringify(
- details.balanceMerchantAcceptable,
+ balanceReceiverAcceptable: Amounts.stringify(
+ details.balanceReceiverAcceptable,
),
balanceExchangeDepositable: Amounts.stringify(
details.balanceExchangeDepositable,
),
- balanceMerchantDepositable: Amounts.stringify(
- details.balanceMerchantDepositable,
+ balanceReceiverDepositable: Amounts.stringify(
+ details.balanceReceiverDepositable,
),
maxEffectiveSpendAmount: Amounts.stringify(details.maxEffectiveSpendAmount),
perExchange,