summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-03-27 14:35:58 +0100
committerFlorian Dold <florian@dold.me>2021-03-27 14:36:08 +0100
commitd44740b787c974c5388811a2989557d93923c49a (patch)
tree39db4f910a3714f2337b1dca4a7b4f1a3c67f053 /packages/taler-wallet-webextension
parent14d48836397f5f52ed686fbffeaaf50a3f5a4577 (diff)
downloadwallet-core-d44740b787c974c5388811a2989557d93923c49a.tar.gz
wallet-core-d44740b787c974c5388811a2989557d93923c49a.tar.bz2
wallet-core-d44740b787c974c5388811a2989557d93923c49a.zip
fix build issues
Diffstat (limited to 'packages/taler-wallet-webextension')
-rw-r--r--packages/taler-wallet-webextension/package.json1
-rw-r--r--packages/taler-wallet-webextension/src/browserHttpLib.ts2
-rw-r--r--packages/taler-wallet-webextension/src/pages/pay.tsx29
-rw-r--r--packages/taler-wallet-webextension/src/pages/popup.tsx5
-rw-r--r--packages/taler-wallet-webextension/src/pages/refund.tsx25
-rw-r--r--packages/taler-wallet-webextension/src/pages/tip.tsx12
-rw-r--r--packages/taler-wallet-webextension/src/pages/welcome.tsx2
-rw-r--r--packages/taler-wallet-webextension/src/pages/withdraw.tsx4
-rw-r--r--packages/taler-wallet-webextension/src/renderHtml.tsx167
-rw-r--r--packages/taler-wallet-webextension/src/wxApi.ts10
-rw-r--r--packages/taler-wallet-webextension/src/wxBackend.ts15
-rw-r--r--packages/taler-wallet-webextension/tsconfig.json46
12 files changed, 95 insertions, 223 deletions
diff --git a/packages/taler-wallet-webextension/package.json b/packages/taler-wallet-webextension/package.json
index b9a35eb1b..69c504006 100644
--- a/packages/taler-wallet-webextension/package.json
+++ b/packages/taler-wallet-webextension/package.json
@@ -14,6 +14,7 @@
"dependencies": {
"moment": "^2.29.1",
"@gnu-taler/taler-wallet-core": "workspace:*",
+ "@gnu-taler/taler-util": "workspace:*",
"tslib": "^2.1.0"
},
"devDependencies": {
diff --git a/packages/taler-wallet-webextension/src/browserHttpLib.ts b/packages/taler-wallet-webextension/src/browserHttpLib.ts
index c71e34174..5c27becb2 100644
--- a/packages/taler-wallet-webextension/src/browserHttpLib.ts
+++ b/packages/taler-wallet-webextension/src/browserHttpLib.ts
@@ -26,7 +26,7 @@ import {
Headers,
bytesToString,
} from "@gnu-taler/taler-wallet-core";
-import { TalerErrorCode } from "@gnu-taler/taler-wallet-core";
+import { TalerErrorCode } from "@gnu-taler/taler-util";
const logger = new Logger("browserHttpLib");
diff --git a/packages/taler-wallet-webextension/src/pages/pay.tsx b/packages/taler-wallet-webextension/src/pages/pay.tsx
index b5da04e31..9c6b10951 100644
--- a/packages/taler-wallet-webextension/src/pages/pay.tsx
+++ b/packages/taler-wallet-webextension/src/pages/pay.tsx
@@ -29,16 +29,16 @@ import * as wxApi from "../wxApi";
import React, { useState, useEffect } from "react";
+import { getJsonI18n } from "@gnu-taler/taler-wallet-core";
import {
- Amounts,
- AmountJson,
PreparePayResult,
+ ConfirmPayResult,
+ AmountJson,
PreparePayResultType,
+ Amounts,
ContractTerms,
ConfirmPayResultType,
- ConfirmPayResult,
- getJsonI18n,
-} from "@gnu-taler/taler-wallet-core";
+} from "@gnu-taler/taler-util";
function TalerPayDialog({ talerPayUri }: { talerPayUri: string }): JSX.Element {
const [payStatus, setPayStatus] = useState<PreparePayResult | undefined>();
@@ -67,7 +67,9 @@ function TalerPayDialog({ talerPayUri }: { talerPayUri: string }): JSX.Element {
if (payStatus.status === PreparePayResultType.PaymentPossible) {
let amountRaw = Amounts.parseOrThrow(payStatus.amountRaw);
- let amountEffective: AmountJson = Amounts.parseOrThrow(payStatus.amountEffective);
+ let amountEffective: AmountJson = Amounts.parseOrThrow(
+ payStatus.amountEffective,
+ );
totalFees = Amounts.sub(amountEffective, amountRaw).amount;
}
@@ -141,13 +143,16 @@ function TalerPayDialog({ talerPayUri }: { talerPayUri: string }): JSX.Element {
if (payResult.contractTerms.fulfillment_message) {
const obj = {
fulfillment_message: payResult.contractTerms.fulfillment_message,
- fulfillment_message_i18n: payResult.contractTerms.fulfillment_message_i18n,
+ fulfillment_message_i18n:
+ payResult.contractTerms.fulfillment_message_i18n,
};
- const msg = getJsonI18n(obj, "fulfillment_message")
- return <div>
- <p>Payment succeeded.</p>
- <p>{msg}</p>
- </div>;
+ const msg = getJsonI18n(obj, "fulfillment_message");
+ return (
+ <div>
+ <p>Payment succeeded.</p>
+ <p>{msg}</p>
+ </div>
+ );
} else {
return <span>Redirecting ...</span>;
}
diff --git a/packages/taler-wallet-webextension/src/pages/popup.tsx b/packages/taler-wallet-webextension/src/pages/popup.tsx
index 9071e46fd..4d12d9a83 100644
--- a/packages/taler-wallet-webextension/src/pages/popup.tsx
+++ b/packages/taler-wallet-webextension/src/pages/popup.tsx
@@ -38,7 +38,8 @@ import {
TransactionType,
AmountString,
Timestamp,
-} from "@gnu-taler/taler-wallet-core";
+ amountFractionalBase,
+} from "@gnu-taler/taler-util";
import { abbrev, renderAmount, PageLink } from "../renderHtml";
import * as wxApi from "../wxApi";
@@ -160,7 +161,7 @@ class WalletNavBar extends React.Component<any, any> {
* Render an amount as a large number with a small currency symbol.
*/
function bigAmount(amount: AmountJson): JSX.Element {
- const v = amount.value + amount.fraction / Amounts.fractionalBase;
+ const v = amount.value + amount.fraction / amountFractionalBase;
return (
<span>
<span style={{ fontSize: "5em", display: "block" }}>{v}</span>{" "}
diff --git a/packages/taler-wallet-webextension/src/pages/refund.tsx b/packages/taler-wallet-webextension/src/pages/refund.tsx
index 572aba8ed..bfeec0aa3 100644
--- a/packages/taler-wallet-webextension/src/pages/refund.tsx
+++ b/packages/taler-wallet-webextension/src/pages/refund.tsx
@@ -23,7 +23,11 @@
import React, { useEffect, useState } from "react";
import * as wxApi from "../wxApi";
import { AmountView } from "../renderHtml";
-import { PurchaseDetails, ApplyRefundResponse, Amounts } from "@gnu-taler/taler-wallet-core";
+import {
+ PurchaseDetails,
+ ApplyRefundResponse,
+ Amounts,
+} from "@gnu-taler/taler-util";
function RefundStatusView(props: { talerRefundUri: string }): JSX.Element {
const [applyResult, setApplyResult] = useState<ApplyRefundResponse>();
@@ -57,15 +61,20 @@ function RefundStatusView(props: { talerRefundUri: string }): JSX.Element {
<>
<h2>Refund Status</h2>
<p>
- The product <em>{applyResult.info.summary}</em> has
- received a total effective refund of{" "}
+ The product <em>{applyResult.info.summary}</em> has received a total
+ effective refund of{" "}
<AmountView amount={applyResult.amountRefundGranted} />.
</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}
+ {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/pages/tip.tsx b/packages/taler-wallet-webextension/src/pages/tip.tsx
index 29c07cfe9..b1ac27228 100644
--- a/packages/taler-wallet-webextension/src/pages/tip.tsx
+++ b/packages/taler-wallet-webextension/src/pages/tip.tsx
@@ -22,7 +22,7 @@
import * as React from "react";
import { useEffect, useState } from "react";
-import { PrepareTipResult } from "@gnu-taler/taler-wallet-core";
+import { PrepareTipResult } from "@gnu-taler/taler-util";
import { AmountView } from "../renderHtml";
import * as wxApi from "../wxApi";
@@ -65,8 +65,8 @@ function TalerTipDialog({ talerTipUri }: { talerTipUri: string }): JSX.Element {
if (prepareTipResult.accepted) {
return (
<span>
- Tip from <code>{prepareTipResult.merchantBaseUrl}</code> accepted.
- Check your transactions list for more details.
+ Tip from <code>{prepareTipResult.merchantBaseUrl}</code> accepted. Check
+ your transactions list for more details.
</span>
);
} else {
@@ -75,8 +75,10 @@ function TalerTipDialog({ talerTipUri }: { talerTipUri: string }): JSX.Element {
<p>
The merchant <code>{prepareTipResult.merchantBaseUrl}</code> is
offering you a tip of{" "}
- <strong><AmountView amount={prepareTipResult.tipAmountEffective} /></strong> via the
- exchange <code>{prepareTipResult.exchangeBaseUrl}</code>
+ <strong>
+ <AmountView amount={prepareTipResult.tipAmountEffective} />
+ </strong>{" "}
+ via the exchange <code>{prepareTipResult.exchangeBaseUrl}</code>
</p>
<button onClick={doAccept}>Accept tip</button>
<button onClick={doIgnore}>Ignore</button>
diff --git a/packages/taler-wallet-webextension/src/pages/welcome.tsx b/packages/taler-wallet-webextension/src/pages/welcome.tsx
index fb4af573d..dd10ac13c 100644
--- a/packages/taler-wallet-webextension/src/pages/welcome.tsx
+++ b/packages/taler-wallet-webextension/src/pages/welcome.tsx
@@ -26,7 +26,7 @@ import { PageLink } from "../renderHtml";
import * as wxApi from "../wxApi";
import { getPermissionsApi } from "../compat";
import { extendedPermissions } from "../permissions";
-import { WalletDiagnostics } from "@gnu-taler/taler-wallet-core";
+import { WalletDiagnostics } from "@gnu-taler/taler-util";
function Diagnostics(): JSX.Element | null {
const [timedOut, setTimedOut] = useState(false);
diff --git a/packages/taler-wallet-webextension/src/pages/withdraw.tsx b/packages/taler-wallet-webextension/src/pages/withdraw.tsx
index 02758fd93..c4a02817c 100644
--- a/packages/taler-wallet-webextension/src/pages/withdraw.tsx
+++ b/packages/taler-wallet-webextension/src/pages/withdraw.tsx
@@ -23,7 +23,7 @@
import * as i18n from "../i18n";
-import { WithdrawDetailView, renderAmount } from "../renderHtml";
+import { renderAmount } from "../renderHtml";
import React, { useState, useEffect } from "react";
import {
@@ -31,7 +31,7 @@ import {
onUpdateNotification,
getWithdrawalDetailsForUri,
} from "../wxApi";
-import { WithdrawUriInfoResponse } from "@gnu-taler/taler-wallet-core";
+import { WithdrawUriInfoResponse } from "@gnu-taler/taler-util";
function WithdrawalDialog(props: { talerWithdrawUri: string }): JSX.Element {
const [details, setDetails] = useState<WithdrawUriInfoResponse | undefined>();
diff --git a/packages/taler-wallet-webextension/src/renderHtml.tsx b/packages/taler-wallet-webextension/src/renderHtml.tsx
index c18c5c199..3e66e5c5d 100644
--- a/packages/taler-wallet-webextension/src/renderHtml.tsx
+++ b/packages/taler-wallet-webextension/src/renderHtml.tsx
@@ -23,9 +23,12 @@
/**
* Imports.
*/
-import { AmountJson, Amounts, stringifyTimestamp, ExchangeWithdrawDetails } from "@gnu-taler/taler-wallet-core";
-import * as i18n from "./i18n";
import React from "react";
+import {
+ AmountJson,
+ Amounts,
+ amountFractionalBase,
+} from "@gnu-taler/taler-util";
/**
* Render amount as HTML, which non-breaking space between
@@ -41,7 +44,7 @@ export function renderAmount(amount: AmountJson | string): JSX.Element {
if (!a) {
return <span>(invalid amount)</span>;
}
- const x = a.value + a.fraction / Amounts.fractionalBase;
+ const x = a.value + a.fraction / amountFractionalBase;
return (
<span>
{x}&nbsp;{a.currency}
@@ -125,164 +128,6 @@ export class Collapsible extends React.Component<
}
}
-function WireFee(props: {
- s: string;
- rci: ExchangeWithdrawDetails;
-}): JSX.Element {
- return (
- <>
- <thead>
- <tr>
- <th colSpan={3}>Wire Method {props.s}</th>
- </tr>
- <tr>
- <th>Applies Until</th>
- <th>Wire Fee</th>
- <th>Closing Fee</th>
- </tr>
- </thead>
- <tbody>
- {props.rci.wireFees.feesForType[props.s].map((f) => (
- <tr key={f.sig}>
- <td>{stringifyTimestamp(f.endStamp)}</td>
- <td>{renderAmount(f.wireFee)}</td>
- <td>{renderAmount(f.closingFee)}</td>
- </tr>
- ))}
- </tbody>
- </>
- );
-}
-
-function AuditorDetailsView(props: {
- rci: ExchangeWithdrawDetails | null;
-}): JSX.Element {
- const rci = props.rci;
- console.log("rci", rci);
- if (!rci) {
- return (
- <p>
- Details will be displayed when a valid exchange provider URL is entered.
- </p>
- );
- }
- if ((rci.exchangeInfo.details?.auditors ?? []).length === 0) {
- return <p>The exchange is not audited by any auditors.</p>;
- }
- return (
- <div>
- {(rci.exchangeInfo.details?.auditors ?? []).map((a) => (
- <div key={a.auditor_pub}>
- <h3>Auditor {a.auditor_url}</h3>
- <p>
- Public key: <ExpanderText text={a.auditor_pub} />
- </p>
- <p>
- Trusted:{" "}
- {rci.trustedAuditorPubs.indexOf(a.auditor_pub) >= 0 ? "yes" : "no"}
- </p>
- <p>
- Audits {a.denomination_keys.length} of {rci.numOfferedDenoms}{" "}
- denominations
- </p>
- </div>
- ))}
- </div>
- );
-}
-
-function FeeDetailsView(props: {
- rci: ExchangeWithdrawDetails | null;
-}): JSX.Element {
- const rci = props.rci;
- if (!rci) {
- return (
- <p>
- Details will be displayed when a valid exchange provider URL is entered.
- </p>
- );
- }
-
- const denoms = rci.selectedDenoms;
- const withdrawFee = renderAmount(rci.withdrawFee);
- const overhead = renderAmount(rci.overhead);
-
- return (
- <div>
- <h3>Overview</h3>
- <p>
- Public key:{" "}
- <ExpanderText
- text={rci.exchangeInfo.details?.masterPublicKey ?? "??"}
- />
- </p>
- <p>
- {i18n.str`Withdrawal fees:`} {withdrawFee}
- </p>
- <p>
- {i18n.str`Rounding loss:`} {overhead}
- </p>
- <p>{i18n.str`Earliest expiration (for deposit): ${stringifyTimestamp(
- rci.earliestDepositExpiration,
- )}`}</p>
- <h3>Coin Fees</h3>
- <div style={{ overflow: "auto" }}>
- <table className="pure-table">
- <thead>
- <tr>
- <th>{i18n.str`# Coins`}</th>
- <th>{i18n.str`Value`}</th>
- <th>{i18n.str`Withdraw Fee`}</th>
- <th>{i18n.str`Refresh Fee`}</th>
- <th>{i18n.str`Deposit Fee`}</th>
- </tr>
- </thead>
- <tbody>
- {denoms.selectedDenoms.map((ds) => {
- return (
- <tr key={ds.denom.denomPub}>
- <td>{ds.count + "x"}</td>
- <td>{renderAmount(ds.denom.value)}</td>
- <td>{renderAmount(ds.denom.feeWithdraw)}</td>
- <td>{renderAmount(ds.denom.feeRefresh)}</td>
- <td>{renderAmount(ds.denom.feeDeposit)}</td>
- </tr>
- );
- })}
- </tbody>
- </table>
- </div>
- <h3>Wire Fees</h3>
- <div style={{ overflow: "auto" }}>
- <table className="pure-table">
- {Object.keys(rci.wireFees.feesForType).map((s) => (
- <WireFee key={s} s={s} rci={rci} />
- ))}
- </table>
- </div>
- </div>
- );
-}
-
-/**
- * Shows details about a withdraw request.
- */
-export function WithdrawDetailView(props: {
- rci: ExchangeWithdrawDetails | null;
-}): JSX.Element {
- const rci = props.rci;
- return (
- <div>
- <Collapsible initiallyCollapsed={true} title="Fee and Spending Details">
- <FeeDetailsView rci={rci} />
- </Collapsible>
- <Collapsible initiallyCollapsed={true} title="Auditor Details">
- <AuditorDetailsView rci={rci} />
- </Collapsible>
- </div>
- );
-}
-
interface ExpanderTextProps {
text: string;
}
diff --git a/packages/taler-wallet-webextension/src/wxApi.ts b/packages/taler-wallet-webextension/src/wxApi.ts
index 3c01dfe96..c14047cf0 100644
--- a/packages/taler-wallet-webextension/src/wxApi.ts
+++ b/packages/taler-wallet-webextension/src/wxApi.ts
@@ -22,21 +22,21 @@
* Imports.
*/
import {
+ CoreApiResponse,
ConfirmPayResult,
BalancesResponse,
+ TransactionsResponse,
+ ApplyRefundResponse,
PreparePayResult,
AcceptWithdrawalResponse,
WalletDiagnostics,
- CoreApiResponse,
- OperationFailedError,
GetWithdrawalDetailsForUriRequest,
WithdrawUriInfoResponse,
- TransactionsResponse,
- ApplyRefundResponse,
PrepareTipRequest,
PrepareTipResult,
AcceptTipRequest,
-} from "@gnu-taler/taler-wallet-core";
+} from "@gnu-taler/taler-util";
+import { OperationFailedError } from "@gnu-taler/taler-wallet-core";
export interface ExtendedPermissionsResponse {
newValue: boolean;
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts b/packages/taler-wallet-webextension/src/wxBackend.ts
index 64dd25fb8..62cedc9a9 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -25,22 +25,23 @@
*/
import { isFirefox, getPermissionsApi } from "./compat";
import { extendedPermissions } from "./permissions";
-
import {
Wallet,
OpenedPromise,
openPromise,
openTalerDatabase,
Database,
- classifyTalerUri,
- TalerUriType,
+ Stores,
makeErrorDetails,
- TalerErrorCode,
+} from "@gnu-taler/taler-wallet-core";
+import {
+ classifyTalerUri,
CoreApiResponse,
- WalletDiagnostics,
CoreApiResponseSuccess,
- Stores,
-} from "@gnu-taler/taler-wallet-core";
+ TalerErrorCode,
+ TalerUriType,
+ WalletDiagnostics,
+} from "@gnu-taler/taler-util";
import { BrowserHttpLib } from "./browserHttpLib";
import { BrowserCryptoWorkerFactory } from "./browserCryptoWorkerFactory";
diff --git a/packages/taler-wallet-webextension/tsconfig.json b/packages/taler-wallet-webextension/tsconfig.json
index 4b1bb19be..417a73b1b 100644
--- a/packages/taler-wallet-webextension/tsconfig.json
+++ b/packages/taler-wallet-webextension/tsconfig.json
@@ -1,22 +1,30 @@
{
- "compilerOptions": {
- "composite": true,
- "lib": ["es6", "DOM"],
- "jsx": "react",
- "moduleResolution": "Node",
- "reactNamespace": "React",
- "module": "ESNext",
- "target": "ES6",
- "noImplicitAny": true,
- "outDir": "lib",
- "noEmitOnError": true,
- "strict": true,
- "incremental": true,
- "sourceMap": true,
- "esModuleInterop": true,
- "importHelpers": true,
- "rootDir": "./src",
- "typeRoots": ["./node_modules/@types"]
+ "compilerOptions": {
+ "composite": true,
+ "lib": ["es6", "DOM"],
+ "jsx": "react",
+ "moduleResolution": "Node",
+ "reactNamespace": "React",
+ "module": "ESNext",
+ "target": "ES6",
+ "noImplicitAny": true,
+ "outDir": "lib",
+ "noEmitOnError": true,
+ "strict": true,
+ "incremental": true,
+ "sourceMap": true,
+ "esModuleInterop": true,
+ "importHelpers": true,
+ "rootDir": "./src",
+ "typeRoots": ["./node_modules/@types"]
+ },
+ "references": [
+ {
+ "path": "../taler-wallet-core/"
},
- "include": ["src/**/*"]
+ {
+ "path": "../taler-util/"
+ }
+ ],
+ "include": ["src/**/*"]
}