From f4b5f3cff8c29b4aab31d1ef0d0cefd32045db63 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 14 Apr 2021 18:21:23 +0200 Subject: implement debug flag for allowing late withdrawal --- packages/taler-wallet-core/src/index.ts | 4 ++- .../taler-wallet-core/src/operations/withdraw.ts | 15 +++++++--- packages/taler-wallet-core/src/util/debugFlags.ts | 32 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 packages/taler-wallet-core/src/util/debugFlags.ts (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/src/index.ts b/packages/taler-wallet-core/src/index.ts index 1faf4e5fa..1f3901273 100644 --- a/packages/taler-wallet-core/src/index.ts +++ b/packages/taler-wallet-core/src/index.ts @@ -51,4 +51,6 @@ export * from "./util/promiseUtils"; export * from "./util/query"; export * from "./util/http"; -export * from "./pending-types"; \ No newline at end of file +export * from "./pending-types"; + +export * from "./util/debugFlags"; diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index fcaa0e6d5..237ef9fc6 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -20,6 +20,7 @@ import { AmountJson, Amounts, + durationFromSpec, parseWithdrawUri, Timestamp, } from "@gnu-taler/taler-util"; @@ -74,6 +75,7 @@ import { URL } from "../util/url"; import { TalerErrorCode } from "@gnu-taler/taler-util"; import { updateRetryInfoTimeout, initRetryInfo } from "../util/retries"; import { compare } from "@gnu-taler/taler-util"; +import { walletCoreDebugFlags } from "../util/debugFlags.js"; /** * Logger for this file. @@ -174,10 +176,15 @@ interface ExchangeWithdrawDetails { export function isWithdrawableDenom(d: DenominationRecord): boolean { const now = getTimestampNow(); const started = timestampCmp(now, d.stampStart) >= 0; - const lastPossibleWithdraw = timestampSubtractDuraction( - d.stampExpireWithdraw, - { d_ms: 50 * 1000 }, - ); + let lastPossibleWithdraw: Timestamp; + if (walletCoreDebugFlags.denomselAllowLate) { + lastPossibleWithdraw = d.stampExpireWithdraw; + } else { + lastPossibleWithdraw = timestampSubtractDuraction( + d.stampExpireWithdraw, + durationFromSpec({ minutes: 5 }), + ); + } const remaining = getDurationRemaining(lastPossibleWithdraw, now); const stillOkay = remaining.d_ms !== 0; return started && stillOkay && !d.isRevoked; diff --git a/packages/taler-wallet-core/src/util/debugFlags.ts b/packages/taler-wallet-core/src/util/debugFlags.ts new file mode 100644 index 000000000..cea249d27 --- /dev/null +++ b/packages/taler-wallet-core/src/util/debugFlags.ts @@ -0,0 +1,32 @@ +/* + This file is part of GNU Taler + (C) 2021 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see + */ + +/** + * Debug flags for wallet-core. + * + * @author Florian Dold + */ + +export interface WalletCoreDebugFlags { + /** + * Allow withdrawal of denominations even though they are about to expire. + */ + denomselAllowLate: boolean; +} + +export const walletCoreDebugFlags: WalletCoreDebugFlags = { + denomselAllowLate: false, +}; -- cgit v1.2.3