fix db issue
This commit is contained in:
parent
b0b737f72e
commit
4fd1e07449
@ -51,6 +51,7 @@ export class Index<S extends IDBValidKey,T> {
|
||||
constructor(s: Store<T>, indexName: string, keyPath: string | string[]) {
|
||||
this.storeName = s.name;
|
||||
this.indexName = indexName;
|
||||
this.keyPath = keyPath;
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,7 +61,7 @@ export class Index<S extends IDBValidKey,T> {
|
||||
*/
|
||||
export interface QueryStream<T> {
|
||||
indexJoin<S,I extends IDBValidKey>(index: Index<I,S>,
|
||||
keyFn: (obj: T) => I): QueryStream<[T, S]>;
|
||||
keyFn: (obj: T) => I): QueryStream<JoinResult<T, S>>;
|
||||
keyJoin<S,I extends IDBValidKey>(store: Store<S>,
|
||||
keyFn: (obj: T) => I): QueryStream<JoinResult<T,S>>;
|
||||
filter(f: (T: any) => boolean): QueryStream<T>;
|
||||
@ -106,7 +107,7 @@ abstract class QueryStreamBase<T> implements QueryStream<T> {
|
||||
}
|
||||
|
||||
indexJoin<S,I extends IDBValidKey>(index: Index<I,S>,
|
||||
keyFn: (obj: T) => I): QueryStream<[T, S]> {
|
||||
keyFn: (obj: T) => I): QueryStream<JoinResult<T, S>> {
|
||||
this.root.addStoreAccess(index.storeName, false);
|
||||
return new QueryStreamIndexJoin(this, index.storeName, index.indexName, keyFn);
|
||||
}
|
||||
@ -212,7 +213,7 @@ class QueryStreamFlatMap<T> extends QueryStreamBase<T> {
|
||||
}
|
||||
|
||||
|
||||
class QueryStreamIndexJoin<T, S> extends QueryStreamBase<[T, S]> {
|
||||
class QueryStreamIndexJoin<T, S> extends QueryStreamBase<JoinResult<T, S>> {
|
||||
s: QueryStreamBase<T>;
|
||||
storeName: string;
|
||||
key: any;
|
||||
@ -239,7 +240,7 @@ class QueryStreamIndexJoin<T, S> extends QueryStreamBase<[T, S]> {
|
||||
req.onsuccess = () => {
|
||||
let cursor = req.result;
|
||||
if (cursor) {
|
||||
f(false, [value, cursor.value], tx);
|
||||
f(false, {left: value, right: cursor.value}, tx);
|
||||
cursor.continue();
|
||||
} else {
|
||||
f(true, undefined, tx);
|
||||
|
@ -320,7 +320,7 @@ export namespace Stores {
|
||||
super("coins", {keyPath: "coinPub"});
|
||||
}
|
||||
|
||||
exchangeBaseUrlIndex = new Index<string,Coin>(this, "exchangeBaseUrl", "exchageBaseUrl");
|
||||
exchangeBaseUrlIndex = new Index<string,Coin>(this, "exchangeBaseUrl", "exchangeBaseUrl");
|
||||
}
|
||||
|
||||
class HistoryStore extends Store<HistoryRecord> {
|
||||
@ -461,10 +461,10 @@ export class Wallet {
|
||||
|
||||
let x: number;
|
||||
|
||||
function storeExchangeCoin(mc: any, url: string) {
|
||||
let exchange: IExchangeInfo = mc[0];
|
||||
function storeExchangeCoin(mc: JoinResult<IExchangeInfo, Coin>, url: string) {
|
||||
let exchange: IExchangeInfo = mc.left;
|
||||
console.log("got coin for exchange", url);
|
||||
let coin: Coin = mc[1];
|
||||
let coin: Coin = mc.right;
|
||||
if (coin.suspended) {
|
||||
console.log("skipping suspended coin",
|
||||
coin.denomPub,
|
||||
@ -517,6 +517,7 @@ export class Wallet {
|
||||
console.log("not suitable exchanges found");
|
||||
}
|
||||
|
||||
console.log("exchange coins:");
|
||||
console.dir(m);
|
||||
|
||||
// We try to find the first exchange where we have
|
||||
|
@ -24,26 +24,37 @@
|
||||
|
||||
/// <reference path="../lib/decl/preact.d.ts" />
|
||||
import {substituteFulfillmentUrl} from "../lib/wallet/helpers";
|
||||
import {Contract, AmountJson} from "../lib/wallet/types";
|
||||
import {Contract, AmountJson, IExchangeInfo} from "../lib/wallet/types";
|
||||
import {renderContract, prettyAmount} from "../lib/wallet/renderHtml";
|
||||
"use strict";
|
||||
import {getExchanges} from "../lib/wallet/wxApi";
|
||||
|
||||
|
||||
interface DetailState {
|
||||
collapsed: boolean;
|
||||
exchanges: null|IExchangeInfo[];
|
||||
}
|
||||
|
||||
interface DetailProps {
|
||||
contract: Contract;
|
||||
contract: Contract
|
||||
collapsed: boolean
|
||||
}
|
||||
|
||||
|
||||
class Details extends preact.Component<DetailProps, DetailState> {
|
||||
constructor() {
|
||||
super();
|
||||
constructor(props: DetailProps) {
|
||||
super(props);
|
||||
this.state = {
|
||||
collapsed: true
|
||||
collapsed: props.collapsed,
|
||||
exchanges: null
|
||||
};
|
||||
|
||||
this.update();
|
||||
}
|
||||
|
||||
async update() {
|
||||
let exchanges = await getExchanges();
|
||||
this.setState({exchanges} as any);
|
||||
}
|
||||
|
||||
render(props: DetailProps, state: DetailState) {
|
||||
@ -51,7 +62,7 @@ class Details extends preact.Component<DetailProps, DetailState> {
|
||||
return (
|
||||
<div>
|
||||
<button className="linky"
|
||||
onClick={() => { this.setState({collapsed: false})}}>
|
||||
onClick={() => { this.setState({collapsed: false} as any)}}>
|
||||
show more details
|
||||
</button>
|
||||
</div>
|
||||
@ -60,7 +71,7 @@ class Details extends preact.Component<DetailProps, DetailState> {
|
||||
return (
|
||||
<div>
|
||||
<button className="linky"
|
||||
onClick={() => this.setState({collapsed: true})}>
|
||||
onClick={() => this.setState({collapsed: true} as any)}>
|
||||
show less details
|
||||
</button>
|
||||
<div>
|
||||
@ -69,6 +80,12 @@ class Details extends preact.Component<DetailProps, DetailState> {
|
||||
{props.contract.exchanges.map(
|
||||
e => <li>{`${e.url}: ${e.master_pub}`}</li>)}
|
||||
</ul>
|
||||
Exchanges in the wallet:
|
||||
<ul>
|
||||
{(state.exchanges || []).map(
|
||||
(e: IExchangeInfo) =>
|
||||
<li>{`${e.baseUrl}: ${e.masterPublicKey}`}</li>)}
|
||||
</ul>
|
||||
</div>
|
||||
</div>);
|
||||
}
|
||||
@ -143,7 +160,7 @@ class ContractPrompt extends preact.Component<ContractPromptProps, ContractPromp
|
||||
this.state.error = `Error: ${resp.error}`;
|
||||
break;
|
||||
}
|
||||
preact.rerender();
|
||||
this.setState({} as any);
|
||||
return;
|
||||
}
|
||||
let c = d.offer.contract;
|
||||
@ -165,7 +182,7 @@ class ContractPrompt extends preact.Component<ContractPromptProps, ContractPromp
|
||||
Confirm payment
|
||||
</button>
|
||||
{(state.error ? <p className="errorbox">{state.error}</p> : <p />)}
|
||||
<Details contract={c} />
|
||||
<Details contract={c} collapsed={!state.error}/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user