summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/cta/Payment
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/Payment')
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/state.ts3
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/stories.tsx48
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/test.ts10
-rw-r--r--packages/taler-wallet-webextension/src/cta/Payment/views.tsx58
4 files changed, 67 insertions, 52 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/state.ts b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
index d171ecbac..4733e5aee 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/state.ts
@@ -84,7 +84,8 @@ export function useComponentState({
return {
status: "error",
error: alertFromError(
- i18n.str`Could not load the status of the term of service`,
+ i18n,
+ i18n.str`Could not load the payment and balance status`,
hook,
),
};
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
index eee5fb684..d03f48746 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
+++ b/packages/taler-wallet-webextension/src/cta/Payment/stories.tsx
@@ -57,9 +57,11 @@ export const NoEnoughBalanceAvailable = tests.createExample(BaseView, {
balanceAvailable: "USD:9" as AmountString,
balanceMaterial: "USD:9" as AmountString,
balanceAgeAcceptable: "USD:9" as AmountString,
- balanceMerchantAcceptable: "USD:9" as AmountString,
- balanceMerchantDepositable: "USD:9" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:9" as AmountString,
+ balanceReceiverDepositable: "USD:9" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
@@ -97,9 +99,11 @@ export const NoEnoughBalanceMaterial = tests.createExample(BaseView, {
balanceAvailable: "USD:10" as AmountString,
balanceMaterial: "USD:9" as AmountString,
balanceAgeAcceptable: "USD:9" as AmountString,
- balanceMerchantAcceptable: "USD:9" as AmountString,
- balanceMerchantDepositable: "USD:0" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:9" as AmountString,
+ balanceReceiverDepositable: "USD:0" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
@@ -137,9 +141,11 @@ export const NoEnoughBalanceAgeAcceptable = tests.createExample(BaseView, {
balanceAvailable: "USD:10" as AmountString,
balanceMaterial: "USD:10" as AmountString,
balanceAgeAcceptable: "USD:9" as AmountString,
- balanceMerchantAcceptable: "USD:9" as AmountString,
- balanceMerchantDepositable: "USD:9" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:9" as AmountString,
+ balanceReceiverDepositable: "USD:9" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
@@ -178,9 +184,11 @@ export const NoEnoughBalanceMerchantAcceptable = tests.createExample(BaseView, {
balanceAvailable: "USD:10" as AmountString,
balanceMaterial: "USD:10" as AmountString,
balanceAgeAcceptable: "USD:10" as AmountString,
- balanceMerchantAcceptable: "USD:9" as AmountString,
- balanceMerchantDepositable: "USD:9" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:9" as AmountString,
+ balanceReceiverDepositable: "USD:9" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
@@ -220,9 +228,11 @@ export const NoEnoughBalanceMerchantDepositable = tests.createExample(
balanceAvailable: "USD:10" as AmountString,
balanceMaterial: "USD:10" as AmountString,
balanceAgeAcceptable: "USD:10" as AmountString,
- balanceMerchantAcceptable: "USD:10" as AmountString,
- balanceMerchantDepositable: "USD:9" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:10" as AmountString,
+ balanceReceiverDepositable: "USD:9" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
@@ -261,9 +271,11 @@ export const NoEnoughBalanceFeeGap = tests.createExample(BaseView, {
balanceAvailable: "USD:10" as AmountString,
balanceMaterial: "USD:10" as AmountString,
balanceAgeAcceptable: "USD:10" as AmountString,
- balanceMerchantAcceptable: "USD:10" as AmountString,
- balanceMerchantDepositable: "USD:10" as AmountString,
- feeGapEstimate: "USD:1" as AmountString,
+ balanceReceiverAcceptable: "USD:10" as AmountString,
+ balanceReceiverDepositable: "USD:10" as AmountString,
+ maxEffectiveSpendAmount: "USD:9.5" as AmountString,
+ balanceExchangeDepositable: "USD:9.5" as AmountString,
+ perExchange: {},
},
talerUri: "taler://pay/..",
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/test.ts b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
index 5e009b3de..5847cc833 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/test.ts
+++ b/packages/taler-wallet-webextension/src/cta/Payment/test.ts
@@ -29,6 +29,7 @@ import {
PreparePayResultPaymentPossible,
PreparePayResultType,
ScopeType,
+ TransactionMajorState,
} from "@gnu-taler/taler-util";
import { WalletApiOperation } from "@gnu-taler/taler-wallet-core";
import { expect } from "chai";
@@ -549,8 +550,13 @@ describe("Payment CTA states", () => {
// expect(r.totalFees).deep.equal(Amounts.parseOrThrow("USD:1"));
expect(state.payHandler.onClick).not.undefined;
- handler.notifyEventFromWallet(
- NotificationType.TransactionStateTransition,
+ handler.notifyEventFromWallet({
+ type: NotificationType.TransactionStateTransition,
+ newTxState: {} as any,
+ oldTxState: {} as any,
+ transactionId: "123",
+ }
+
);
},
(state) => {
diff --git a/packages/taler-wallet-webextension/src/cta/Payment/views.tsx b/packages/taler-wallet-webextension/src/cta/Payment/views.tsx
index c00e570f9..68d161ab2 100644
--- a/packages/taler-wallet-webextension/src/cta/Payment/views.tsx
+++ b/packages/taler-wallet-webextension/src/cta/Payment/views.tsx
@@ -21,18 +21,20 @@ import {
PreparePayResultType,
TranslatedString,
} from "@gnu-taler/taler-util";
-import { Fragment, h, VNode } from "preact";
+import { useTranslationContext } from "@gnu-taler/web-util/browser";
+import { Fragment, VNode, h } from "preact";
import { Part } from "../../components/Part.js";
import { PaymentButtons } from "../../components/PaymentButtons.js";
-import { SuccessBox, WarningBox } from "../../components/styled/index.js";
+import { ShowFullContractTermPopup } from "../../components/ShowFullContractTermPopup.js";
import { Time } from "../../components/Time.js";
-import { useTranslationContext } from "@gnu-taler/web-util/browser";
import {
- getAmountWithFee,
- MerchantDetails,
- PurchaseDetails,
-} from "../../wallet/Transaction.js";
+ AgeSign,
+ SuccessBox,
+ WarningBox,
+} from "../../components/styled/index.js";
+import { MerchantDetails } from "../../wallet/Transaction.js";
import { State } from "./index.js";
+import { EnabledBySettings } from "../../components/EnabledBySettings.js";
type SupportedStates =
| State.Ready
@@ -58,7 +60,17 @@ export function BaseView(state: SupportedStates): VNode {
<section style={{ textAlign: "left" }}>
<Part
- title={i18n.str`Purchase`}
+ title={
+ contractTerms.minimum_age ? (
+ <Fragment>
+ <i18n.Translate>Purchase</i18n.Translate>
+ &nbsp;
+ <AgeSign size={20} title={i18n.str`This purchase is age restricted.`}>{contractTerms.minimum_age}+</AgeSign>
+ </Fragment>
+ ) : (
+ <i18n.Translate>Purchase</i18n.Translate>
+ )
+ }
text={contractTerms.summary as TranslatedString}
kind="neutral"
/>
@@ -67,29 +79,6 @@ export function BaseView(state: SupportedStates): VNode {
text={<MerchantDetails merchant={contractTerms.merchant} />}
kind="neutral"
/>
- <Part
- title={i18n.str`Details`}
- text={
- <PurchaseDetails
- price={getAmountWithFee(effective, state.amount, "debit")}
- info={{
- ...contractTerms,
- orderId: contractTerms.order_id,
- contractTermsHash: "",
- // products: contractTerms.products!,
- }}
- proposalId={state.payStatus.proposalId}
- />
- }
- kind="neutral"
- />
- {contractTerms.order_id && (
- <Part
- title={i18n.str`Receipt`}
- text={`#${contractTerms.order_id}` as TranslatedString}
- kind="neutral"
- />
- )}
{contractTerms.pay_deadline && (
<Part
title={i18n.str`Valid until`}
@@ -105,6 +94,13 @@ export function BaseView(state: SupportedStates): VNode {
/>
)}
</section>
+ <EnabledBySettings name="advancedMode">
+ <section style={{ textAlign: "left" }}>
+ <ShowFullContractTermPopup
+ transactionId={state.payStatus.transactionId}
+ />
+ </section>
+ </EnabledBySettings>
<PaymentButtons
amount={effective}
payStatus={state.payStatus}