diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/Payment')
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> + + <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} |