gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: make withdrawal, pay and refu


From: gnunet
Subject: [taler-wallet-core] branch master updated: make withdrawal, pay and refunds work in the WebExtension
Date: Wed, 09 Sep 2020 09:15:55 +0200

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new 71abddec make withdrawal, pay and refunds work in the WebExtension
71abddec is described below

commit 71abddec5e3dc9cc407f468feaaa3284ef528aba
Author: Florian Dold <florian.dold@gmail.com>
AuthorDate: Wed Sep 9 12:45:49 2020 +0530

    make withdrawal, pay and refunds work in the WebExtension
---
 .../taler-wallet-core/src/operations/refund.ts     | 10 +++++++++
 .../taler-wallet-core/src/types/walletTypes.ts     |  4 ++++
 packages/taler-wallet-core/src/util/amounts.ts     |  3 ++-
 packages/taler-wallet-core/src/wallet.ts           |  5 ++---
 .../taler-wallet-webextension/src/pages/refund.tsx | 25 +++++++++++-----------
 packages/taler-wallet-webextension/src/wxApi.ts    |  3 ++-
 .../taler-wallet-webextension/src/wxBackend.ts     | 10 ++++++---
 .../taler-wallet-webextension/static/refund.html   |  8 +++----
 .../static/return-coins.html                       | 16 --------------
 9 files changed, 43 insertions(+), 41 deletions(-)

diff --git a/packages/taler-wallet-core/src/operations/refund.ts 
b/packages/taler-wallet-core/src/operations/refund.ts
index 10a57f90..ff08fc93 100644
--- a/packages/taler-wallet-core/src/operations/refund.ts
+++ b/packages/taler-wallet-core/src/operations/refund.ts
@@ -527,6 +527,16 @@ export async function applyRefund(
     amountRefundGone: Amounts.stringify(amountRefundGone),
     amountRefundGranted: Amounts.stringify(amountRefundGranted),
     pendingAtExchange,
+    info: {
+      contractTermsHash: purchase.contractData.contractTermsHash,
+      merchant: purchase.contractData.merchant,
+      orderId: purchase.contractData.orderId,
+      products: purchase.contractData.products,
+      summary: purchase.contractData.summary,
+      fulfillmentMessage: purchase.contractData.fulfillmentMessage,
+      summary_i18n: purchase.contractData.summaryI18n,
+      fulfillmentMessage_i18n: purchase.contractData.fulfillmentMessageI18n,
+    }
   };
 }
 
diff --git a/packages/taler-wallet-core/src/types/walletTypes.ts 
b/packages/taler-wallet-core/src/types/walletTypes.ts
index b8d8be66..1b20d7b4 100644
--- a/packages/taler-wallet-core/src/types/walletTypes.ts
+++ b/packages/taler-wallet-core/src/types/walletTypes.ts
@@ -55,6 +55,7 @@ import {
   codecForContractTerms,
   ContractTerms,
 } from "./talerTypes";
+import { OrderShortInfo, codecForOrderShortInfo } from "./transactions";
 
 /**
  * Response for the create reserve request to the wallet.
@@ -880,6 +881,8 @@ export interface ApplyRefundResponse {
   amountRefundGone: AmountString;
 
   pendingAtExchange: boolean;
+
+  info: OrderShortInfo;
 }
 
 export const codecForApplyRefundResponse = (): Codec<ApplyRefundResponse> =>
@@ -890,6 +893,7 @@ export const codecForApplyRefundResponse = (): 
Codec<ApplyRefundResponse> =>
     .property("contractTermsHash", codecForString())
     .property("pendingAtExchange", codecForBoolean())
     .property("proposalId", codecForString())
+    .property("info", codecForOrderShortInfo())
     .build("ApplyRefundResponse");
 
 export interface SetCoinSuspendedRequest {
diff --git a/packages/taler-wallet-core/src/util/amounts.ts 
b/packages/taler-wallet-core/src/util/amounts.ts
index 533005b1..e6bee2d1 100644
--- a/packages/taler-wallet-core/src/util/amounts.ts
+++ b/packages/taler-wallet-core/src/util/amounts.ts
@@ -257,7 +257,8 @@ export function isNonZero(a: AmountJson): boolean {
   return a.value > 0 || a.fraction > 0;
 }
 
-export function isZero(a: AmountJson): boolean {
+export function isZero(a: AmountLike): boolean {
+  a = jsonifyAmount(a);
   return a.value === 0 && a.fraction === 0;
 }
 
diff --git a/packages/taler-wallet-core/src/wallet.ts 
b/packages/taler-wallet-core/src/wallet.ts
index 768d5eb0..1140a13c 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -70,7 +70,6 @@ import {
   AcceptManualWithdrawalResult,
   BalancesResponse,
   TestPayArgs,
-  PreparePayResultType,
   IntegrationTestArgs,
   codecForAddExchangeRequest,
   codecForGetWithdrawalDetailsForUri,
@@ -80,7 +79,6 @@ import {
   codecForApplyRefundRequest,
   codecForAcceptBankIntegratedWithdrawalRequest,
   codecForGetExchangeTosRequest,
-  codecForAbortProposalRequest,
   codecForConfirmPayRequest,
   CoreApiResponse,
   codecForPreparePayRequest,
@@ -95,6 +93,7 @@ import {
   codecForPrepareTipRequest,
   codecForAcceptTipRequest,
   codecForAbortPayWithRefundRequest,
+  ApplyRefundResponse,
 } from "./types/walletTypes";
 import { Logger } from "./util/logging";
 
@@ -723,7 +722,7 @@ export class Wallet {
    */
   async applyRefund(
     talerRefundUri: string,
-  ): Promise<{ contractTermsHash: string; proposalId: string }> {
+  ): Promise<ApplyRefundResponse> {
     return applyRefund(this.ws, talerRefundUri);
   }
 
diff --git a/packages/taler-wallet-webextension/src/pages/refund.tsx 
b/packages/taler-wallet-webextension/src/pages/refund.tsx
index 1ace5022..74c33c02 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<ApplyRefundResponse>();
   const [errMsg, setErrMsg] = useState<string | undefined>(undefined);
 
   useEffect(() => {
     const doFetch = async (): Promise<void> => {
       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 <span>Error: {errMsg}</span>;
   }
 
-  if (!applied || !purchaseDetails) {
+  if (!applyResult) {
     return <span>Updating refund status</span>;
   }
 
@@ -62,11 +57,15 @@ function RefundStatusView(props: { talerRefundUri: string 
}): JSX.Element {
     <>
       <h2>Refund Status</h2>
       <p>
-        The product <em>{purchaseDetails.contractTerms.summary}</em> has
-        received a total refund of{" "}
-        <AmountView amount={purchaseDetails.totalRefundAmount} />.
+        The product <em>{applyResult.info.summary}</em> has
+        received a total effective refund of{" "}
+        <AmountView amount={applyResult.amountRefundGranted} />.
       </p>
-      <p>Note that additional fees from the exchange may apply.</p>
+      {applyResult.pendingAtExchange ? <p>Refund processing is still in 
progress.</p> : null}
+      {!Amounts.isZero(applyResult.amountRefundGone) ? <p>
+        The refund amount of <AmountView amount={applyResult.amountRefundGone} 
/>
+        could not be applied.
+      </p> : null}
     </>
   );
 }
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts 
b/packages/taler-wallet-webextension/src/wxApi.ts
index 9bc4a08e..9b7697c9 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<TransactionsResponse> {
  */
 export function applyRefund(
   talerRefundUri: string,
-): Promise<{ contractTermsHash: string; proposalId: string }> {
+): Promise<ApplyRefundResponse> {
   return callBackend("applyRefund", { talerRefundUri });
 }
 
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts 
b/packages/taler-wallet-webextension/src/wxBackend.ts
index a77b173f..e1dcdde4 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<string, unknown> {
-  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,
               {
diff --git a/packages/taler-wallet-webextension/static/refund.html 
b/packages/taler-wallet-webextension/static/refund.html
index 3c1d78a2..68c826bc 100644
--- a/packages/taler-wallet-webextension/static/refund.html
+++ b/packages/taler-wallet-webextension/static/refund.html
@@ -4,10 +4,10 @@
     <meta charset="UTF-8" />
     <title>Taler Wallet: Refund Status</title>
 
-    <link rel="icon" href="/img/icon.png" />
-    <link rel="stylesheet" type="text/css" href="/style/pure.css" />
-    <link rel="stylesheet" type="text/css" href="/style/wallet.css" />
-    <script src="/pageEntryPoint.js"></script>
+    <link rel="icon" href="/static/img/icon.png" />
+    <link rel="stylesheet" type="text/css" href="/static/style/pure.css" />
+    <link rel="stylesheet" type="text/css" href="/static/style/wallet.css" />
+    <script src="/dist/pageEntryPoint.js"></script>
   </head>
 
   <body>
diff --git a/packages/taler-wallet-webextension/static/return-coins.html 
b/packages/taler-wallet-webextension/static/return-coins.html
deleted file mode 100644
index 90703b44..00000000
--- a/packages/taler-wallet-webextension/static/return-coins.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="UTF-8" />
-    <title>Taler Wallet: Return Coins to Bank Account</title>
-
-    <link rel="icon" href="/img/icon.png" />
-    <link rel="stylesheet" type="text/css" href="/style/pure.css" />
-    <link rel="stylesheet" type="text/css" href="/style/wallet.css" />
-    <script src="/pageEntryPoint.js"></script>
-  </head>
-
-  <body>
-    <div id="container"></div>
-  </body>
-</html>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]