fix error in index iteration

This commit is contained in:
Florian Dold 2019-09-01 01:05:38 +02:00
parent aa36fce8a0
commit 70912b0725
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
8 changed files with 24 additions and 7 deletions

View File

@ -1,2 +1,3 @@
#!/usr/bin/env node
require('source-map-support').install();
require('../dist/node/headless/taler-wallet-cli.js')

View File

@ -1,6 +1,6 @@
{
"name": "idb-bridge",
"version": "0.0.9",
"version": "0.0.10",
"description": "IndexedDB implementation that uses SQLite3 as storage",
"main": "./build/index.js",
"types": "./build/index.d.ts",

View File

@ -1156,6 +1156,7 @@ export class MemoryBackend implements Backend {
indexPos = res[1].indexKey;
indexEntry = res[1];
primkeySubPos = forward ? 0 : indexEntry.primaryKeys.length - 1;
continue;
} else {
break;
}

View File

@ -171,6 +171,16 @@ export function installAndroidWalletListener() {
httpLib.handleTunnelResponse(msg.args);
break;
}
case "getWithdrawalInfo": {
const wallet = await wp.promise;
result = await wallet.getWithdrawalInfo(msg.args.talerWithdrawUri);
break;
}
case "acceptWithdrawal": {
const wallet = await wp.promise;
result = await wallet.acceptWithdrawal(msg.args.talerWithdrawUri, msg.args.selectedExchange);
break;
}
case "reset": {
const wallet = await wp.promise;
wallet.stop();

View File

@ -133,8 +133,9 @@ export async function getDefaultNodeWallet(
const myBadge = new ConsoleBadge();
BridgeIDBFactory.enableTracing = true;
const myBackend = new MemoryBackend();
myBackend.enableTracing = false;
myBackend.enableTracing = true;
const storagePath = args.persistentStoragePath;
if (storagePath) {

View File

@ -135,7 +135,7 @@ program
persistentStoragePath: walletDbPath,
});
const withdrawInfo = await wallet.downloadWithdrawInfo(withdrawUrl);
const withdrawInfo = await wallet.getWithdrawalInfo(withdrawUrl);
console.log("withdraw info", withdrawInfo);

View File

@ -21,6 +21,7 @@
*/
import { openPromise } from "./promiseUtils";
import { join } from "path";
/**
* Result of an inner join.
@ -463,11 +464,14 @@ class QueryStreamIndexJoin<T, S> extends QueryStreamBase<JoinResult<T, S>> {
f(true, undefined, tx);
return;
}
const joinKey = this.key(value);
console.log("***** JOINING ON", joinKey);
const s = tx.objectStore(this.storeName).index(this.indexName);
const req = s.openCursor(IDBKeyRange.only(this.key(value)));
const req = s.openCursor(IDBKeyRange.only(joinKey));
req.onsuccess = () => {
const cursor = req.result;
if (cursor) {
console.log(`join result for ${joinKey}`, { left: value, right: cursor.value });
f(false, { left: value, right: cursor.value }, tx);
cursor.continue();
}

View File

@ -1822,7 +1822,7 @@ export class Wallet {
talerWithdrawUri: string,
maybeSelectedExchange?: string,
): Promise<WithdrawDetails> {
const info = await this.downloadWithdrawInfo(talerWithdrawUri);
const info = await this.getWithdrawalInfo(talerWithdrawUri);
let rci: ReserveCreationInfo | undefined = undefined;
if (maybeSelectedExchange) {
rci = await this.getWithdrawDetailsForAmount(
@ -3551,7 +3551,7 @@ export class Wallet {
// strategy to test it.
}
async downloadWithdrawInfo(
async getWithdrawalInfo(
talerWithdrawUri: string,
): Promise<DownloadedWithdrawInfo> {
const uriResult = parseWithdrawUri(talerWithdrawUri);
@ -3577,7 +3577,7 @@ export class Wallet {
talerWithdrawUri: string,
selectedExchange: string,
): Promise<AcceptWithdrawalResponse> {
const withdrawInfo = await this.downloadWithdrawInfo(talerWithdrawUri);
const withdrawInfo = await this.getWithdrawalInfo(talerWithdrawUri);
const exchangeWire = await this.getExchangePaytoUri(
selectedExchange,
withdrawInfo.wireTypes,