diff options
author | Sebastian <sebasjm@gmail.com> | 2022-01-19 13:51:48 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-01-19 13:52:02 -0300 |
commit | e263907017958585c1eaf3c3284314fab5d36c85 (patch) | |
tree | ead079b89f99ee52d4b87ad4c940ad7306d70b3d | |
parent | a01ad4758f8d8f7605e9efd5694d6e203e2d2b6b (diff) |
fix #4880
-rw-r--r-- | packages/taler-wallet-webextension/src/cta/Pay.stories.tsx | 36 | ||||
-rw-r--r-- | packages/taler-wallet-webextension/src/cta/Pay.tsx | 31 | ||||
-rw-r--r-- | packages/taler-wallet-webextension/static-dev/beer.png | bin | 0 -> 52778 bytes |
3 files changed, 67 insertions, 0 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/Pay.stories.tsx b/packages/taler-wallet-webextension/src/cta/Pay.stories.tsx index a1288c337..20c3b7178 100644 --- a/packages/taler-wallet-webextension/src/cta/Pay.stories.tsx +++ b/packages/taler-wallet-webextension/src/cta/Pay.stories.tsx @@ -106,6 +106,42 @@ export const PaymentPossibleWithFee = createExample(TestedComponent, { }, }); +import beer from "../../static-dev/beer.png"; + +export const TicketWithAProductList = createExample(TestedComponent, { + uri: "taler://pay/merchant-backend.taler/2021.242-01G2X4275RBWG/?c=66BE594PDZR24744J6EQK52XM0", + payStatus: { + status: PreparePayResultType.PaymentPossible, + amountEffective: "USD:10", + amountRaw: "USD:10", + noncePriv: "", + contractTerms: { + nonce: "123213123", + merchant: { + name: "someone", + }, + amount: "USD:10", + products: [ + { + description: "beer", + price: "USD:1", + quantity: 10, + image: beer, + }, + { + description: "brown beer", + price: "USD:2", + quantity: 10, + image: beer, + }, + ], + summary: "some beers", + } as Partial<ContractTerms> as any, + contractTermsHash: "123456", + proposalId: "proposal1234", + }, +}); + export const AlreadyConfirmedWithFullfilment = createExample(TestedComponent, { payStatus: { status: PreparePayResultType.AlreadyConfirmed, diff --git a/packages/taler-wallet-webextension/src/cta/Pay.tsx b/packages/taler-wallet-webextension/src/cta/Pay.tsx index e61d3a9d6..6e73b5566 100644 --- a/packages/taler-wallet-webextension/src/cta/Pay.tsx +++ b/packages/taler-wallet-webextension/src/cta/Pay.tsx @@ -36,6 +36,7 @@ import { NotificationType, PreparePayResult, PreparePayResultType, + Product, } from "@gnu-taler/taler-util"; import { OperationFailedError } from "@gnu-taler/taler-wallet-core"; import { Fragment, h, VNode } from "preact"; @@ -48,6 +49,7 @@ import { ButtonSuccess, ErrorBox, LinkSuccess, + SmallLightText, SuccessBox, WalletAction, WarningBox, @@ -240,6 +242,7 @@ export function PaymentRequestView({ payStatus.status !== PreparePayResultType.AlreadyConfirmed ? `${uri}&n=${payStatus.noncePriv}` : uri; + if (!uri) return <Fragment />; return ( <section> <LinkSuccess upperCased onClick={() => setShowQR((qr) => !qr)}> @@ -383,12 +386,40 @@ export function PaymentRequestView({ kind="neutral" /> )} + {contractTerms.products && ( + <ProductList products={contractTerms.products} /> + )} </section> <ButtonsSection /> </WalletAction> ); } +function ProductList({ products }: { products: Product[] }): VNode { + return ( + <Fragment> + <SmallLightText style={{ margin: ".5em" }}> + List of products + </SmallLightText> + <dl> + {products.map((p, i) => ( + <div key={i} style={{ display: "flex", textAlign: "left" }}> + <div> + <img src={p.image} style={{ width: 32, height: 32 }} /> + </div> + <div> + <dt>{p.description}</dt> + <dd> + {p.price} x {p.quantity} {p.unit ? `(${p.unit})` : ``} + </dd> + </div> + </div> + ))} + </dl> + </Fragment> + ); +} + function amountToString(text: AmountLike): string { const aj = Amounts.jsonifyAmount(text); const amount = Amounts.stringifyValue(aj, 2); diff --git a/packages/taler-wallet-webextension/static-dev/beer.png b/packages/taler-wallet-webextension/static-dev/beer.png Binary files differnew file mode 100644 index 000000000..1116db7e6 --- /dev/null +++ b/packages/taler-wallet-webextension/static-dev/beer.png |