summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/pay.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-09-03 20:38:26 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-09-03 20:38:26 +0530
commitf51a59bc72c2886cb2bb88b149a3353857e3eb44 (patch)
treefee6f86112580241f8328869c1e71dd58e238fa9 /packages/taler-wallet-core/src/operations/pay.ts
parentbf9c2ae7f9c24168ddea2ef9387c5a624287d993 (diff)
downloadwallet-core-f51a59bc72c2886cb2bb88b149a3353857e3eb44.tar.gz
wallet-core-f51a59bc72c2886cb2bb88b149a3353857e3eb44.tar.bz2
wallet-core-f51a59bc72c2886cb2bb88b149a3353857e3eb44.zip
implement and test auto-refresh
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/pay.ts21
1 files changed, 17 insertions, 4 deletions
diff --git a/packages/taler-wallet-core/src/operations/pay.ts b/packages/taler-wallet-core/src/operations/pay.ts
index 2c491ec6c..c6f39858d 100644
--- a/packages/taler-wallet-core/src/operations/pay.ts
+++ b/packages/taler-wallet-core/src/operations/pay.ts
@@ -36,6 +36,8 @@ import {
PayEventRecord,
WalletContractData,
getRetryDuration,
+ CoinRecord,
+ DenominationRecord,
} from "../types/dbTypes";
import { NotificationType } from "../types/notifications";
import {
@@ -65,6 +67,7 @@ import {
Duration,
durationMax,
durationMin,
+ isTimestampExpired,
} from "../util/time";
import { strcmp, canonicalJson } from "../util/helpers";
import {
@@ -285,6 +288,19 @@ export function selectPayCoins(
return undefined;
}
+export function isSpendableCoin(coin: CoinRecord, denom: DenominationRecord): boolean {
+ if (coin.suspended) {
+ return false;
+ }
+ if (coin.status !== CoinStatus.Fresh) {
+ return false;
+ }
+ if (isTimestampExpired(denom.stampExpireDeposit)) {
+ return false;
+ }
+ return true;
+}
+
/**
* Select coins from the wallet's database that can be used
* to pay for the given contract.
@@ -370,10 +386,7 @@ async function getCoinsForPayment(
);
continue;
}
- if (coin.suspended) {
- continue;
- }
- if (coin.status !== CoinStatus.Fresh) {
+ if (!isSpendableCoin(coin, denom)) {
continue;
}
acis.push({