summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-08-19 15:12:33 +0200
committerFlorian Dold <florian@dold.me>2021-08-19 15:12:33 +0200
commitc0e6b6d0f66508ebc8d33502d1281cb48a1c9cc6 (patch)
treee80d81ec1c13a24c73a00eb6f388d6db75b32c0c /packages
parentdefc393d6e320f6cc76df059a94936a7b88571a1 (diff)
downloadwallet-core-c0e6b6d0f66508ebc8d33502d1281cb48a1c9cc6.tar.gz
wallet-core-c0e6b6d0f66508ebc8d33502d1281cb48a1c9cc6.tar.bz2
wallet-core-c0e6b6d0f66508ebc8d33502d1281cb48a1c9cc6.zip
run pending operations at least once, style fixes
Diffstat (limited to 'packages')
-rw-r--r--packages/taler-wallet-cli/src/index.ts1
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/harness.ts1
-rw-r--r--packages/taler-wallet-cli/src/integrationtests/test-timetravel-autorefresh.ts3
-rw-r--r--packages/taler-wallet-core/src/operations/refresh.ts12
-rw-r--r--packages/taler-wallet-core/src/operations/withdraw.ts18
-rw-r--r--packages/taler-wallet-core/src/wallet.ts8
-rw-r--r--packages/taler-wallet-embedded/src/index.ts2
-rw-r--r--packages/taler-wallet-webextension/src/wxBackend.ts12
8 files changed, 35 insertions, 22 deletions
diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts
index 796b6ae14..68e42bd08 100644
--- a/packages/taler-wallet-cli/src/index.ts
+++ b/packages/taler-wallet-cli/src/index.ts
@@ -1065,5 +1065,6 @@ export function main() {
logger.warn("Allowing withdrawal of late denominations for debugging");
walletCoreDebugFlags.denomselAllowLate = true;
}
+ logger.trace(`running wallet-cli with`, process.argv);
walletCli.run();
}
diff --git a/packages/taler-wallet-cli/src/integrationtests/harness.ts b/packages/taler-wallet-cli/src/integrationtests/harness.ts
index c9c576ebc..305e46e5c 100644
--- a/packages/taler-wallet-cli/src/integrationtests/harness.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/harness.ts
@@ -1620,6 +1620,7 @@ export class WalletCli {
const self = this;
this._client = {
async call(op: any, payload: any): Promise<any> {
+ console.log("calling wallet with timetravel arg", self.timetravelArg);
const resp = await sh(
self.globalTestState,
`wallet-${self.name}`,
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-timetravel-autorefresh.ts b/packages/taler-wallet-cli/src/integrationtests/test-timetravel-autorefresh.ts
index bee7581bd..bad821198 100644
--- a/packages/taler-wallet-cli/src/integrationtests/test-timetravel-autorefresh.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/test-timetravel-autorefresh.ts
@@ -62,6 +62,7 @@ async function applyTimeTravel(
}
if (s.wallet) {
+ console.log("setting wallet time travel to", timetravelDuration);
s.wallet.setTimetravel(timetravelDuration);
}
}
@@ -139,6 +140,7 @@ export async function runTimetravelAutorefreshTest(t: GlobalTestState) {
// Travel into the future, the deposit expiration is two years
// into the future.
+ console.log("applying first time travel");
await applyTimeTravel(durationFromSpec({ days: 400 }), {
wallet,
exchange,
@@ -164,6 +166,7 @@ export async function runTimetravelAutorefreshTest(t: GlobalTestState) {
// Travel into the future, the deposit expiration is two years
// into the future.
+ console.log("applying second time travel");
await applyTimeTravel(durationFromSpec({ years: 2, months: 6 }), {
wallet,
exchange,
diff --git a/packages/taler-wallet-core/src/operations/refresh.ts b/packages/taler-wallet-core/src/operations/refresh.ts
index 2549b1404..20b07d44e 100644
--- a/packages/taler-wallet-core/src/operations/refresh.ts
+++ b/packages/taler-wallet-core/src/operations/refresh.ts
@@ -147,6 +147,7 @@ async function refreshCreateSession(
throw Error("db inconsistent: exchange of coin not found");
}
+
const { availableAmount, availableDenoms } = await ws.db
.mktx((x) => ({
denominations: x.denominations,
@@ -161,6 +162,7 @@ async function refreshCreateSession(
throw Error("db inconsistent: denomination for coin not found");
}
+ // FIXME: use an index here, based on the withdrawal expiration time.
const availableDenoms: DenominationRecord[] = await tx.denominations.indexes.byExchangeBaseUrl
.iter(exchange.baseUrl)
.toArray();
@@ -913,7 +915,15 @@ export async function autoRefresh(
}
}
if (refreshCoins.length > 0) {
- await createRefreshGroup(ws, tx, refreshCoins, RefreshReason.Scheduled);
+ const res = await createRefreshGroup(
+ ws,
+ tx,
+ refreshCoins,
+ RefreshReason.Scheduled,
+ );
+ logger.info(
+ `created refresh group for auto-refresh (${res.refreshGroupId})`,
+ );
}
logger.info(
`current wallet time: ${timestampToIsoString(getTimestampNow())}`,
diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts
index 44e626110..81c35c17b 100644
--- a/packages/taler-wallet-core/src/operations/withdraw.ts
+++ b/packages/taler-wallet-core/src/operations/withdraw.ts
@@ -17,7 +17,6 @@
/**
* Imports.
*/
-import * as LibtoolVersion from "@gnu-taler/taler-util";
import {
AmountJson,
Amounts,
@@ -41,6 +40,7 @@ import {
WithdrawResponse,
URL,
WithdrawUriInfoResponse,
+ VersionMatchResult,
} from "@gnu-taler/taler-util";
import {
CoinRecord,
@@ -143,7 +143,7 @@ interface ExchangeWithdrawDetails {
*
* Older exchanges don't return version information.
*/
- versionMatch: LibtoolVersion.VersionMatchResult | undefined;
+ versionMatch: VersionMatchResult | undefined;
/**
* Libtool-style version string for the exchange or "unknown"
@@ -693,15 +693,15 @@ export async function updateWithdrawalDenoms(
while (current < denominations.length) {
const updatedDenominations: DenominationRecord[] = [];
// Do a batch of batchSize
- for (let batchIdx = 0; batchIdx < batchSize; batchIdx++) {
- current++;
- if (current >= denominations.length) {
- break;
- }
+ for (
+ let batchIdx = 0;
+ batchIdx < batchSize && current < denominations.length;
+ batchIdx++, current++
+ ) {
const denom = denominations[current];
if (denom.status === DenominationStatus.Unverified) {
logger.trace(
- `Validation denomination (${current + 1}/${
+ `Validating denomination (${current + 1}/${
denominations.length
}) signature of ${denom.denomPubHash}`,
);
@@ -939,7 +939,7 @@ export async function getExchangeWithdrawalInfo(
let versionMatch;
if (exchangeDetails.protocolVersion) {
- versionMatch = LibtoolVersion.compare(
+ versionMatch = compare(
WALLET_EXCHANGE_PROTOCOL_VERSION,
exchangeDetails.protocolVersion,
);
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index 3c3da3cea..fec7e6155 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -333,7 +333,7 @@ async function runTaskLoop(
}
}
- if (opts.stopWhenDone && numGivingLiveness === 0) {
+ if (opts.stopWhenDone && numGivingLiveness === 0 && iteration !== 0) {
logger.warn(`stopping, as no pending operations have lifeness`);
return;
}
@@ -970,15 +970,11 @@ export class Wallet {
this.ws.stop();
}
- runRetryLoop(): Promise<void> {
- return runTaskLoop(this.ws);
- }
-
runPending(forceNow: boolean = false) {
return runPending(this.ws, forceNow);
}
- runTaskLoop(opts: RetryLoopOpts) {
+ runTaskLoop(opts?: RetryLoopOpts) {
return runTaskLoop(this.ws, opts);
}
diff --git a/packages/taler-wallet-embedded/src/index.ts b/packages/taler-wallet-embedded/src/index.ts
index 0dcfaad6b..604375c73 100644
--- a/packages/taler-wallet-embedded/src/index.ts
+++ b/packages/taler-wallet-embedded/src/index.ts
@@ -179,7 +179,7 @@ class NativeWalletMessageHandler {
const w = await getDefaultNodeWallet(this.walletArgs);
this.maybeWallet = w;
await w.handleCoreApiRequest("initWallet", "native-init", {});
- w.runRetryLoop().catch((e) => {
+ w.runTaskLoop().catch((e) => {
console.error("Error during wallet retry loop", e);
});
this.wp.resolve(w);
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts b/packages/taler-wallet-webextension/src/wxBackend.ts
index c41dd4fba..4004f04f6 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -49,7 +49,7 @@ import { BrowserCryptoWorkerFactory } from "./browserCryptoWorkerFactory";
/**
* Currently active wallet instance. Might be unloaded and
* re-instantiated when the database is reset.
- *
+ *
* FIXME: Maybe move the wallet resetting into the Wallet class?
*/
let currentWallet: Wallet | undefined;
@@ -215,8 +215,10 @@ function makeSyncWalletRedirect(
): Record<string, unknown> {
const innerUrl = new URL(chrome.extension.getURL(url));
if (params) {
- const hParams = Object.keys(params).map(k => `${k}=${params[k]}`).join('&')
- innerUrl.hash = innerUrl.hash + '?' + hParams
+ const hParams = Object.keys(params)
+ .map((k) => `${k}=${params[k]}`)
+ .join("&");
+ innerUrl.hash = innerUrl.hash + "?" + hParams;
}
if (isFirefox()) {
// Some platforms don't support the sync redirect (yet), so fall back to
@@ -272,8 +274,8 @@ async function reinitWallet(): Promise<void> {
}
}
});
- wallet.runRetryLoop().catch((e) => {
- console.log("error during wallet retry loop", e);
+ wallet.runTaskLoop().catch((e) => {
+ console.log("error during wallet task loop", e);
});
// Useful for debugging in the background page.
(window as any).talerWallet = wallet;