aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-03-02 02:16:18 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-03-02 02:16:18 +0100
commit8714240c909d9c2f2deeb6ae99f219295f67c708 (patch)
tree13833dee5b8eb30dda4de5f05af0a9a02291780f
parent344d3bda09c2e03035598c3ad1c974dd0d9977e2 (diff)
show accepted exchanges
-rw-r--r--lib/decl/mithril.d.ts2
-rw-r--r--lib/wallet/types.ts63
-rw-r--r--lib/wallet/wallet.ts64
-rw-r--r--lib/wallet/wxMessaging.ts2
-rw-r--r--pages/confirm-contract.tsx38
5 files changed, 102 insertions, 67 deletions
diff --git a/lib/decl/mithril.d.ts b/lib/decl/mithril.d.ts
index c87102260..c45633490 100644
--- a/lib/decl/mithril.d.ts
+++ b/lib/decl/mithril.d.ts
@@ -608,7 +608,7 @@ declare module _mithril {
*
* @see m.component
*/
- controller: MithrilControllerFunction<T> |
+ controller?: MithrilControllerFunction<T> |
MithrilControllerConstructor<T>;
/**
diff --git a/lib/wallet/types.ts b/lib/wallet/types.ts
index 748df6f4c..feab1bcb1 100644
--- a/lib/wallet/types.ts
+++ b/lib/wallet/types.ts
@@ -150,6 +150,69 @@ export interface Coin {
}
+@Checkable.Class
+export class ExchangeHandle {
+ @Checkable.String
+ master_pub: string;
+
+ @Checkable.String
+ url: string;
+
+ static checked: (obj: any) => ExchangeHandle;
+}
+
+
+@Checkable.Class
+export class Contract {
+ @Checkable.String
+ H_wire: string;
+
+ @Checkable.Value(AmountJson)
+ amount: AmountJson;
+
+ @Checkable.List(Checkable.AnyObject)
+ auditors: any[];
+
+ @Checkable.String
+ expiry: string;
+
+ @Checkable.Any
+ locations: any;
+
+ @Checkable.Value(AmountJson)
+ max_fee: AmountJson;
+
+ @Checkable.Any
+ merchant: any;
+
+ @Checkable.String
+ merchant_pub: string;
+
+ @Checkable.List(Checkable.Value(ExchangeHandle))
+ exchanges: ExchangeHandle[];
+
+ @Checkable.List(Checkable.AnyObject)
+ products: any[];
+
+ @Checkable.String
+ refund_deadline: string;
+
+ @Checkable.String
+ timestamp: string;
+
+ @Checkable.Number
+ transaction_id: number;
+
+ @Checkable.String
+ fulfillment_url: string;
+
+ @Checkable.Optional(Checkable.String)
+ repurchase_correlation_id: string;
+
+ static checked: (obj: any) => Contract;
+}
+
+
export type PayCoinInfo = Array<{ updatedCoin: Coin, sig: CoinPaySig }>;
diff --git a/lib/wallet/wallet.ts b/lib/wallet/wallet.ts
index 3764edfbc..0dc232bb0 100644
--- a/lib/wallet/wallet.ts
+++ b/lib/wallet/wallet.ts
@@ -33,6 +33,8 @@ import {CryptoApi} from "./cryptoApi";
import {Coin} from "./types";
import {PayCoinInfo} from "./types";
import {CheckRepurchaseResult} from "./types";
+import {Contract} from "./types";
+import {ExchangeHandle} from "./types";
"use strict";
@@ -182,68 +184,6 @@ export class ConfirmReserveRequest {
}
-@Checkable.Class
-export class ExchangeHandle {
- @Checkable.String
- master_pub: string;
-
- @Checkable.String
- url: string;
-
- static checked: (obj: any) => ExchangeHandle;
-}
-
-
-@Checkable.Class
-export class Contract {
- @Checkable.String
- H_wire: string;
-
- @Checkable.Value(AmountJson)
- amount: AmountJson;
-
- @Checkable.List(Checkable.AnyObject)
- auditors: any[];
-
- @Checkable.String
- expiry: string;
-
- @Checkable.Any
- locations: any;
-
- @Checkable.Value(AmountJson)
- max_fee: AmountJson;
-
- @Checkable.Any
- merchant: any;
-
- @Checkable.String
- merchant_pub: string;
-
- @Checkable.List(Checkable.Value(ExchangeHandle))
- exchanges: ExchangeHandle[];
-
- @Checkable.List(Checkable.AnyObject)
- products: any[];
-
- @Checkable.String
- refund_deadline: string;
-
- @Checkable.String
- timestamp: string;
-
- @Checkable.Number
- transaction_id: number;
-
- @Checkable.String
- fulfillment_url: string;
-
- @Checkable.Optional(Checkable.String)
- repurchase_correlation_id: string;
-
- static checked: (obj: any) => Contract;
-}
-
@Checkable.Class
export class Offer {
diff --git a/lib/wallet/wxMessaging.ts b/lib/wallet/wxMessaging.ts
index d49a80efb..4f496861d 100644
--- a/lib/wallet/wxMessaging.ts
+++ b/lib/wallet/wxMessaging.ts
@@ -22,7 +22,7 @@ import {Checkable} from "./checkable";
import {AmountJson} from "./types";
import Port = chrome.runtime.Port;
import {Notifier} from "./types";
-import {Contract} from "./wallet";
+import {Contract} from "./types";
"use strict";
diff --git a/pages/confirm-contract.tsx b/pages/confirm-contract.tsx
index 9ce1b0a5a..0c7419c6c 100644
--- a/pages/confirm-contract.tsx
+++ b/pages/confirm-contract.tsx
@@ -21,12 +21,14 @@
* @author Florian Dold
*/
-/// <reference path="../lib/decl/handlebars/handlebars.d.ts" />
-"use strict";
+/// <reference path="../lib/decl/handlebars/handlebars.d.ts" />
+import MithrilComponent = _mithril.MithrilComponent;
import {substituteFulfillmentUrl} from "../lib/wallet/helpers";
+import m from "mithril";
+import {Contract} from "../lib/wallet/types";
+"use strict";
-declare var m: any;
function prettyAmount(amount) {
let v = amount.value + amount.fraction / 1e6;
@@ -34,6 +36,35 @@ function prettyAmount(amount) {
}
+const Details = {
+ controller() {
+ return {collapsed: m.prop(true)};
+ },
+ view(ctrl, contract: Contract) {
+ if (ctrl.collapsed()) {
+ return m("div", [
+ m("button.linky", {
+ onclick: () => {
+ ctrl.collapsed(false);
+ }
+ }, "show more details")
+ ]);
+ } else {
+ return m("div", [
+ m("button.linky", {
+ onclick: () => {
+ ctrl.collapsed(true);
+ }
+ }, "show less details"),
+ m("div", [
+ "Accepted exchanges:",
+ m("ul", contract.exchanges.map(e => m("li", `${e.url}: ${e.master_pub}`)))
+ ])
+ ]);
+ }
+ }
+};
+
export function main() {
let url = URI(document.location.href);
let query: any = URI.parseQuery(url.query());
@@ -58,6 +89,7 @@ export function main() {
`${p.description}: ${prettyAmount(p.price)}`))),
m("button.confirm-pay", {onclick: doPayment}, i18n`Confirm Payment`),
m("p", error ? error : []),
+ m(Details, contract)
];
}
};