From 35c83414f9e0af11012c1a2e00672d2a7c1856ae Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 15 May 2020 12:53:35 +0530 Subject: fix issues in the webextension refund UI --- src/webex/messages.ts | 6 +++--- src/webex/pageEntryPoint.ts | 4 ++++ src/webex/pages/refund.tsx | 4 ++-- src/webex/wxApi.ts | 15 +++++++++------ src/webex/wxBackend.ts | 11 +++++++---- 5 files changed, 25 insertions(+), 15 deletions(-) (limited to 'src/webex') diff --git a/src/webex/messages.ts b/src/webex/messages.ts index 179eec88a..932636f1a 100644 --- a/src/webex/messages.ts +++ b/src/webex/messages.ts @@ -122,7 +122,7 @@ export interface MessageMap { response: void; }; "get-purchase-details": { - request: { contractTermsHash: string }; + request: { proposalId: string }; response: walletTypes.PurchaseDetails; }; "accept-tip": { @@ -135,7 +135,7 @@ export interface MessageMap { }; "accept-refund": { request: { refundUrl: string }; - response: string; + response: { contractTermsHash: string; proposalId: string }; }; "abort-failed-payment": { request: { contractTermsHash: string }; @@ -169,7 +169,7 @@ export interface MessageMap { response: walletTypes.ExtendedPermissionsResponse; }; "get-extended-permissions": { - request: { }; + request: {}; response: walletTypes.ExtendedPermissionsResponse; }; } diff --git a/src/webex/pageEntryPoint.ts b/src/webex/pageEntryPoint.ts index b9bdba06e..9fd1d36f1 100644 --- a/src/webex/pageEntryPoint.ts +++ b/src/webex/pageEntryPoint.ts @@ -25,6 +25,7 @@ import { createPopup } from "./pages/popup"; import { createWithdrawPage } from "./pages/withdraw"; import { createWelcomePage } from "./pages/welcome"; import { createPayPage } from "./pages/pay"; +import { createRefundPage } from "./pages/refund"; function main(): void { try { @@ -47,6 +48,9 @@ function main(): void { case "pay.html": mainElement = createPayPage(); break; + case "refund.html": + mainElement = createRefundPage(); + break; default: throw Error(`page '${page}' not implemented`); } diff --git a/src/webex/pages/refund.tsx b/src/webex/pages/refund.tsx index 621a286bb..c5d6a00df 100644 --- a/src/webex/pages/refund.tsx +++ b/src/webex/pages/refund.tsx @@ -36,9 +36,9 @@ function RefundStatusView(props: { talerRefundUri: string }): JSX.Element { useEffect(() => { const doFetch = async (): Promise => { try { - const hc = await wxApi.applyRefund(props.talerRefundUri); + const result = await wxApi.applyRefund(props.talerRefundUri); setApplied(true); - const r = await wxApi.getPurchaseDetails(hc); + const r = await wxApi.getPurchaseDetails(result.proposalId); setPurchaseDetails(r); } catch (e) { console.error(e); diff --git a/src/webex/wxApi.ts b/src/webex/wxApi.ts index 0bd444856..1823f662c 100644 --- a/src/webex/wxApi.ts +++ b/src/webex/wxApi.ts @@ -246,9 +246,9 @@ export function returnCoins(args: { * the contract terms hash. */ export function getPurchaseDetails( - contractTermsHash: string, + proposalId: string, ): Promise { - return callBackend("get-purchase-details", { contractTermsHash }); + return callBackend("get-purchase-details", { proposalId }); } /** @@ -268,7 +268,9 @@ export function acceptTip(talerTipUri: string): Promise { /** * Download a refund and accept it. */ -export function applyRefund(refundUrl: string): Promise { +export function applyRefund( + refundUrl: string, +): Promise<{ contractTermsHash: string; proposalId: string }> { return callBackend("accept-refund", { refundUrl }); } @@ -329,7 +331,9 @@ export function getDiagnostics(): Promise { /** * Get diagnostics information */ -export function setExtendedPermissions(value: boolean): Promise { +export function setExtendedPermissions( + value: boolean, +): Promise { return callBackend("set-extended-permissions", { value }); } @@ -340,7 +344,6 @@ export function getExtendedPermissions(): Promise { return callBackend("get-extended-permissions", {}); } - export function onUpdateNotification(f: () => void): () => void { const port = chrome.runtime.connect({ name: "notifications" }); const listener = (): void => { @@ -350,4 +353,4 @@ export function onUpdateNotification(f: () => void): () => void { return () => { port.onMessage.removeListener(listener); }; -} \ No newline at end of file +} diff --git a/src/webex/wxBackend.ts b/src/webex/wxBackend.ts index f56cba176..0e8b53070 100644 --- a/src/webex/wxBackend.ts +++ b/src/webex/wxBackend.ts @@ -212,11 +212,14 @@ async function handleMessage( return resp; } case "get-purchase-details": { - const contractTermsHash = detail.contractTermsHash; - if (!contractTermsHash) { - throw Error("contractTermsHash missing"); + const proposalId = detail.proposalId; + if (!proposalId) { + throw Error("proposalId missing"); } - return needsWallet().getPurchaseDetails(contractTermsHash); + if (typeof proposalId !== "string") { + throw Error("proposalId must be a string"); + } + return needsWallet().getPurchaseDetails(proposalId); } case "accept-refund": return needsWallet().applyRefund(detail.refundUrl); -- cgit v1.2.3