From 71abddec5e3dc9cc407f468feaaa3284ef528aba Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 9 Sep 2020 12:45:49 +0530 Subject: make withdrawal, pay and refunds work in the WebExtension --- .../taler-wallet-webextension/src/pages/refund.tsx | 25 +++++++++++----------- packages/taler-wallet-webextension/src/wxApi.ts | 3 ++- .../taler-wallet-webextension/src/wxBackend.ts | 10 ++++++--- 3 files changed, 21 insertions(+), 17 deletions(-) (limited to 'packages/taler-wallet-webextension/src') diff --git a/packages/taler-wallet-webextension/src/pages/refund.tsx b/packages/taler-wallet-webextension/src/pages/refund.tsx index 1ace50226..74c33c020 100644 --- a/packages/taler-wallet-webextension/src/pages/refund.tsx +++ b/packages/taler-wallet-webextension/src/pages/refund.tsx @@ -23,22 +23,17 @@ import React, { useEffect, useState } from "react"; import * as wxApi from "../wxApi"; import { AmountView } from "../renderHtml"; -import { PurchaseDetails } from "taler-wallet-core"; +import { PurchaseDetails, ApplyRefundResponse, Amounts } from "taler-wallet-core"; function RefundStatusView(props: { talerRefundUri: string }): JSX.Element { - const [applied, setApplied] = useState(false); - const [purchaseDetails, setPurchaseDetails] = useState< - PurchaseDetails | undefined - >(undefined); + const [applyResult, setApplyResult] = useState(); const [errMsg, setErrMsg] = useState(undefined); useEffect(() => { const doFetch = async (): Promise => { try { const result = await wxApi.applyRefund(props.talerRefundUri); - setApplied(true); - // const r = await wxApi.getPurchaseDetails(result.proposalId); - // setPurchaseDetails(r); + setApplyResult(result); } catch (e) { console.error(e); setErrMsg(e.message); @@ -54,7 +49,7 @@ function RefundStatusView(props: { talerRefundUri: string }): JSX.Element { return Error: {errMsg}; } - if (!applied || !purchaseDetails) { + if (!applyResult) { return Updating refund status; } @@ -62,11 +57,15 @@ function RefundStatusView(props: { talerRefundUri: string }): JSX.Element { <>

Refund Status

- The product {purchaseDetails.contractTerms.summary} has - received a total refund of{" "} - . + The product {applyResult.info.summary} has + received a total effective refund of{" "} + .

-

Note that additional fees from the exchange may apply.

+ {applyResult.pendingAtExchange ?

Refund processing is still in progress.

: null} + {!Amounts.isZero(applyResult.amountRefundGone) ?

+ The refund amount of + could not be applied. +

: null} ); } diff --git a/packages/taler-wallet-webextension/src/wxApi.ts b/packages/taler-wallet-webextension/src/wxApi.ts index 9bc4a08e6..9b7697c99 100644 --- a/packages/taler-wallet-webextension/src/wxApi.ts +++ b/packages/taler-wallet-webextension/src/wxApi.ts @@ -32,6 +32,7 @@ import { GetWithdrawalDetailsForUriRequest, WithdrawUriInfoResponse, TransactionsResponse, + ApplyRefundResponse, } from "taler-wallet-core"; export interface ExtendedPermissionsResponse { @@ -131,7 +132,7 @@ export function getTransactions(): Promise { */ export function applyRefund( talerRefundUri: string, -): Promise<{ contractTermsHash: string; proposalId: string }> { +): Promise { return callBackend("applyRefund", { talerRefundUri }); } diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts b/packages/taler-wallet-webextension/src/wxBackend.ts index a77b173fe..e1dcdde49 100644 --- a/packages/taler-wallet-webextension/src/wxBackend.ts +++ b/packages/taler-wallet-webextension/src/wxBackend.ts @@ -203,7 +203,7 @@ function makeSyncWalletRedirect( oldUrl: string, params?: { [name: string]: string | undefined }, ): Record { - const innerUrl = new URL(chrome.extension.getURL("/" + url)); + const innerUrl = new URL(chrome.extension.getURL(url)); if (params) { for (const key in params) { const p = params[key]; @@ -296,7 +296,11 @@ function headerListener( return; } console.log("in header listener"); - if (details.statusCode === 402 || details.statusCode === 202) { + if ( + details.statusCode === 402 || + details.statusCode === 202 || + details.statusCode === 200 + ) { console.log(`got 402/202 from ${details.url}`); for (const header of details.responseHeaders || []) { if (header.name.toLowerCase() === "taler") { @@ -332,7 +336,7 @@ function headerListener( ); case TalerUriType.TalerRefund: return makeSyncWalletRedirect( - "refund.html", + "/static/refund.html", details.tabId, details.url, { -- cgit v1.2.3