From c8c03e381e252dc3a73a2c35bb1cd2ee24eeaabb Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 23 Jan 2018 17:05:58 +0100 Subject: better types --- src/webex/messages.ts | 26 ++++++++++++++------------ src/webex/pages/confirm-contract.tsx | 20 ++++++++++++++------ src/webex/wxApi.ts | 10 +++++++--- src/webex/wxBackend.ts | 2 +- 4 files changed, 36 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/webex/messages.ts b/src/webex/messages.ts index 2219cdf1d..9a7dc8fd4 100644 --- a/src/webex/messages.ts +++ b/src/webex/messages.ts @@ -26,6 +26,8 @@ import * as dbTypes from "../dbTypes"; import * as talerTypes from "../talerTypes"; import * as walletTypes from "../walletTypes"; +import { UpgradeResponse } from "./wxApi"; + /** * Message type information. */ @@ -73,7 +75,7 @@ export interface MessageMap { }; "query-payment": { request: { }; - response: void; + response: dbTypes.PurchaseRecord; }; "exchange-info": { request: { baseUrl: string }; @@ -129,7 +131,7 @@ export interface MessageMap { }; "withdraw-payback-reserve": { request: { reservePub: string }; - response: void; + response: dbTypes.ReserveRecord[]; }; "get-precoins": { request: { exchangeBaseUrl: string }; @@ -145,11 +147,11 @@ export interface MessageMap { }; "check-upgrade": { request: { }; - response: void; + response: UpgradeResponse; }; "get-sender-wire-infos": { request: { }; - response: void; + response: walletTypes.SenderWireInfos; }; "return-coins": { request: { }; @@ -164,20 +166,20 @@ export interface MessageMap { response: void; }; "get-purchase": { - request: any; - response: void; + request: { contractTermsHash: string }; + response: dbTypes.PurchaseRecord; }; "get-full-refund-fees": { request: { refundPermissions: talerTypes.RefundPermission[] }; - response: void; + response: AmountJson; }; "accept-tip": { request: { tipToken: talerTypes.TipToken }; - response: void; + response: walletTypes.TipStatus; }; "get-tip-status": { request: { tipToken: talerTypes.TipToken }; - response: void; + response: walletTypes.TipStatus; }; "clear-notification": { request: { }; @@ -188,12 +190,12 @@ export interface MessageMap { response: void; }; "download-proposal": { - request: any; - response: void; + request: { url: string }; + response: number; }; "submit-pay": { request: { contractTermsHash: string, sessionId: string | undefined }; - response: void; + response: walletTypes.ConfirmPayResult; }; "accept-refund": { request: { refundUrl: string } diff --git a/src/webex/pages/confirm-contract.tsx b/src/webex/pages/confirm-contract.tsx index 2ec131052..7fe6b9600 100644 --- a/src/webex/pages/confirm-contract.tsx +++ b/src/webex/pages/confirm-contract.tsx @@ -49,7 +49,7 @@ interface DetailState { interface DetailProps { contractTerms: ContractTerms; collapsed: boolean; - exchanges: null|ExchangeRecord[]; + exchanges: ExchangeRecord[] | undefined; } @@ -110,11 +110,11 @@ interface ContractPromptProps { interface ContractPromptState { proposalId: number | undefined; - proposal: ProposalDownloadRecord | null; + proposal: ProposalDownloadRecord | undefined; error: string | null; payDisabled: boolean; alreadyPaid: boolean; - exchanges: null|ExchangeRecord[]; + exchanges: ExchangeRecord[] | undefined; /** * Don't request updates to proposal state while * this is set to true, to avoid UI flickering @@ -123,6 +123,7 @@ interface ContractPromptState { holdCheck: boolean; payStatus?: CheckPayResult; replaying: boolean; + payInProgress: boolean; } class ContractPrompt extends React.Component { @@ -131,10 +132,11 @@ class ContractPrompt extends React.Component(type: T, detail: MessageMap[T]["request"]): Promise { - return new Promise((resolve, reject) => { +async function callBackend( + type: T, + detail: MessageMap[T]["request"], +): Promise { + return new Promise((resolve, reject) => { chrome.runtime.sendMessage({ type, detail }, (resp) => { if (resp && resp.error) { reject(resp); @@ -201,7 +205,7 @@ export function payback(coinPub: string): Promise { /** * Get a proposal stored in the wallet by its proposal id. */ -export function getProposal(proposalId: number) { +export function getProposal(proposalId: number): Promise { return callBackend("get-proposal", { proposalId }); } diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts index 30842398b..98b543d28 100644 --- a/src/webex/wxBackend.ts +++ b/src/webex/wxBackend.ts @@ -514,7 +514,7 @@ function handleHttpPayment(headerList: chrome.webRequest.HttpHeader[], url: stri console.log("processing refund"); const uri = new URI(chrome.extension.getURL("/src/webex/pages/refund.html")); uri.query({ refundUrl: fields.refund_url }); - return { redirectUrl: uri.href() }; + return { redirectUrl: uri.href }; } // We need to do some asynchronous operation, we can't directly redirect -- cgit v1.2.3