diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-09-03 20:38:26 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-09-03 20:38:26 +0530 |
commit | f51a59bc72c2886cb2bb88b149a3353857e3eb44 (patch) | |
tree | fee6f86112580241f8328869c1e71dd58e238fa9 /packages/taler-wallet-core/src/operations/pay.ts | |
parent | bf9c2ae7f9c24168ddea2ef9387c5a624287d993 (diff) | |
download | wallet-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.ts | 21 |
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({ |