make wallet independent of chrome/WX api
This commit is contained in:
parent
abf15268ac
commit
5bb1c95ec5
@ -28,7 +28,8 @@ interface HttpResponse {
|
||||
}
|
||||
|
||||
|
||||
function httpReq(method: string,
|
||||
class BrowserHttpLib {
|
||||
req(method: string,
|
||||
url: string|uri.URI,
|
||||
options?: any): Promise<HttpResponse> {
|
||||
let urlString: string;
|
||||
@ -59,19 +60,19 @@ function httpReq(method: string,
|
||||
}
|
||||
|
||||
|
||||
|
||||
function httpGet(url: string|uri.URI) {
|
||||
return httpReq("get", url);
|
||||
get(url: string|uri.URI) {
|
||||
return this.req("get", url);
|
||||
}
|
||||
|
||||
|
||||
function httpPostJson(url: string|uri.URI, body) {
|
||||
return httpReq("post", url, {req: JSON.stringify(body)});
|
||||
postJson(url: string|uri.URI, body) {
|
||||
return this.req("post", url, {req: JSON.stringify(body)});
|
||||
}
|
||||
|
||||
|
||||
function httpPostForm(url: string|uri.URI, form) {
|
||||
return httpReq("post", url, {req: form});
|
||||
postForm(url: string|uri.URI, form) {
|
||||
return this.req("post", url, {req: form});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -59,7 +59,8 @@ function makeHandlers(wallet) {
|
||||
wallet.confirmReserve(req)
|
||||
.then((resp) => {
|
||||
if (resp.success) {
|
||||
resp.backlink = chrome.extension.getURL("pages/reserve-success.html");
|
||||
resp.backlink = chrome.extension.getURL(
|
||||
"pages/reserve-success.html");
|
||||
}
|
||||
sendResponse(resp);
|
||||
});
|
||||
@ -93,12 +94,24 @@ function makeHandlers(wallet) {
|
||||
};
|
||||
}
|
||||
|
||||
class ChromeBadge {
|
||||
setText(s: string) {
|
||||
chrome.browserAction.setBadgeText({text: s});
|
||||
}
|
||||
|
||||
setColor(c: string) {
|
||||
chrome.browserAction.setBadgeBackgroundColor({color: c});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function wxMain() {
|
||||
chrome.browserAction.setBadgeText({text: ""});
|
||||
|
||||
openTalerDb().then((db) => {
|
||||
let wallet = new Wallet(db, undefined, undefined);
|
||||
let http = new BrowserHttpLib();
|
||||
let badge = new ChromeBadge();
|
||||
let wallet = new Wallet(db, http, badge);
|
||||
let handlers = makeHandlers(wallet);
|
||||
wallet.updateBadge();
|
||||
chrome.runtime.onMessage.addListener(
|
||||
|
@ -20,7 +20,6 @@
|
||||
* @author Florian Dold
|
||||
*/
|
||||
/// <reference path="../decl/urijs/URIjs.d.ts" />
|
||||
/// <reference path="../decl/chrome/chrome.d.ts" />
|
||||
"use strict";
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
@ -264,7 +263,7 @@ class Wallet {
|
||||
form.append(req.field_mint, req.mint);
|
||||
// TODO: set bank-specified fields.
|
||||
let mintBaseUrl = canonicalizeBaseUrl(req.mint);
|
||||
return httpPostForm(req.post_url, form)
|
||||
return this.http.postForm(req.post_url, form)
|
||||
.then((hresp) => {
|
||||
let resp = {
|
||||
status: hresp.status,
|
||||
@ -351,7 +350,7 @@ class Wallet {
|
||||
wd.reserve_sig = pc.withdrawSig;
|
||||
wd.coin_ev = pc.coinEv;
|
||||
let reqUrl = URI("reserve/withdraw").absoluteTo(r.mint_base_url);
|
||||
return httpPostJson(reqUrl, wd);
|
||||
return this.http.postJson(reqUrl, wd);
|
||||
})
|
||||
.then(resp => {
|
||||
if (resp.status != 200) {
|
||||
@ -381,8 +380,8 @@ class Wallet {
|
||||
return n;
|
||||
}
|
||||
function doBadge(n) {
|
||||
chrome.browserAction.setBadgeText({ text: "" + n });
|
||||
chrome.browserAction.setBadgeBackgroundColor({ color: "#0F0" });
|
||||
this.badge.setText(n.toString());
|
||||
this.badge.setColor("#0F0");
|
||||
}
|
||||
Query(this.db)
|
||||
.iter("coins")
|
||||
@ -447,7 +446,7 @@ class Wallet {
|
||||
.then((reserve) => {
|
||||
let reqUrl = URI("reserve/status").absoluteTo(mint.baseUrl);
|
||||
reqUrl.query({ 'reserve_pub': reservePubStr });
|
||||
return httpGet(reqUrl).then(resp => {
|
||||
return this.http.get(reqUrl).then(resp => {
|
||||
if (resp.status != 200) {
|
||||
throw Error();
|
||||
}
|
||||
@ -470,7 +469,7 @@ class Wallet {
|
||||
*/
|
||||
updateMintFromUrl(baseUrl) {
|
||||
let reqUrl = URI("keys").absoluteTo(baseUrl);
|
||||
return httpGet(reqUrl).then((resp) => {
|
||||
return this.http.get(reqUrl).then((resp) => {
|
||||
if (resp.status != 200) {
|
||||
throw Error("/keys request failed");
|
||||
}
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
|
||||
/// <reference path="../decl/urijs/URIjs.d.ts" />
|
||||
/// <reference path="../decl/chrome/chrome.d.ts" />
|
||||
"use strict";
|
||||
|
||||
@Checkable.Class
|
||||
@ -196,12 +195,22 @@ function canonicalizeBaseUrl(url) {
|
||||
return x.href()
|
||||
}
|
||||
|
||||
interface HttpRequestLibrary {
|
||||
|
||||
interface HttpRequestLibrary {
|
||||
req(method: string,
|
||||
url: string|uri.URI,
|
||||
options?: any): Promise<HttpResponse>;
|
||||
|
||||
get(url: string|uri.URI): Promise<HttpResponse>;
|
||||
|
||||
postJson(url: string|uri.URI, body): Promise<HttpResponse>;
|
||||
|
||||
postForm(url: string|uri.URI, form): Promise<HttpResponse>;
|
||||
}
|
||||
|
||||
interface Badge {
|
||||
|
||||
setText(s: string): void;
|
||||
setColor(c: string): void;
|
||||
}
|
||||
|
||||
|
||||
@ -435,7 +444,7 @@ class Wallet {
|
||||
// TODO: set bank-specified fields.
|
||||
let mintBaseUrl = canonicalizeBaseUrl(req.mint);
|
||||
|
||||
return httpPostForm(req.post_url, form)
|
||||
return this.http.postForm(req.post_url, form)
|
||||
.then((hresp) => {
|
||||
let resp: ConfirmReserveResponse = {
|
||||
status: hresp.status,
|
||||
@ -537,7 +546,7 @@ class Wallet {
|
||||
wd.reserve_sig = pc.withdrawSig;
|
||||
wd.coin_ev = pc.coinEv;
|
||||
let reqUrl = URI("reserve/withdraw").absoluteTo(r.mint_base_url);
|
||||
return httpPostJson(reqUrl, wd);
|
||||
return this.http.postJson(reqUrl, wd);
|
||||
})
|
||||
.then(resp => {
|
||||
if (resp.status != 200) {
|
||||
@ -572,8 +581,8 @@ class Wallet {
|
||||
}
|
||||
|
||||
function doBadge(n) {
|
||||
chrome.browserAction.setBadgeText({text: "" + n});
|
||||
chrome.browserAction.setBadgeBackgroundColor({color: "#0F0"});
|
||||
this.badge.setText(n.toString());
|
||||
this.badge.setColor("#0F0");
|
||||
}
|
||||
|
||||
Query(this.db)
|
||||
@ -647,7 +656,7 @@ class Wallet {
|
||||
.then((reserve) => {
|
||||
let reqUrl = URI("reserve/status").absoluteTo(mint.baseUrl);
|
||||
reqUrl.query({'reserve_pub': reservePubStr});
|
||||
return httpGet(reqUrl).then(resp => {
|
||||
return this.http.get(reqUrl).then(resp => {
|
||||
if (resp.status != 200) {
|
||||
throw Error();
|
||||
}
|
||||
@ -671,7 +680,7 @@ class Wallet {
|
||||
*/
|
||||
updateMintFromUrl(baseUrl) {
|
||||
let reqUrl = URI("keys").absoluteTo(baseUrl);
|
||||
return httpGet(reqUrl).then((resp) => {
|
||||
return this.http.get(reqUrl).then((resp) => {
|
||||
if (resp.status != 200) {
|
||||
throw Error("/keys request failed");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user