From b1bf3538e62a3cc22a436cfc5041c07a2c5e32e9 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 27 Sep 2021 13:06:50 -0300 Subject: some ui fixing from belen comments --- packages/taler-util/src/amounts.ts | 4 +- .../src/components/ErrorMessage.tsx | 2 +- .../src/components/styled/index.tsx | 16 +- .../src/cta/Pay.stories.tsx | 62 +++++- packages/taler-wallet-webextension/src/cta/Pay.tsx | 243 +++++++++++---------- .../src/hooks/useBalances.tsx | 1 - 6 files changed, 211 insertions(+), 117 deletions(-) (limited to 'packages') diff --git a/packages/taler-util/src/amounts.ts b/packages/taler-util/src/amounts.ts index f0434be0e..5a8c7f06f 100644 --- a/packages/taler-util/src/amounts.ts +++ b/packages/taler-util/src/amounts.ts @@ -407,7 +407,7 @@ export class Amounts { return `${a.currency}:${s}`; } - static stringifyValue(a: AmountJson): string { + static stringifyValue(a: AmountJson, minFractional: number = 0): string { const av = a.value + Math.floor(a.fraction / amountFractionalBase); const af = a.fraction % amountFractionalBase; let s = av.toString(); @@ -416,7 +416,7 @@ export class Amounts { s = s + "."; let n = af; for (let i = 0; i < amountFractionalLength; i++) { - if (!n) { + if (!n && i >= minFractional) { break; } s = s + Math.floor((n / amountFractionalBase) * 10).toString(); diff --git a/packages/taler-wallet-webextension/src/components/ErrorMessage.tsx b/packages/taler-wallet-webextension/src/components/ErrorMessage.tsx index b0e339c70..cfcef16d5 100644 --- a/packages/taler-wallet-webextension/src/components/ErrorMessage.tsx +++ b/packages/taler-wallet-webextension/src/components/ErrorMessage.tsx @@ -22,7 +22,7 @@ export function ErrorMessage({ title, description }: { title?: string|VNode; des const [showErrorDetail, setShowErrorDetail] = useState(false); if (!title) return null; - return + return

{title}

{ description && +
+ + } + if (payStatus.status === PreparePayResultType.PaymentPossible) { + return +
+ + {i18n.str`Pay`} {amountToString(payStatus.amountEffective)} + +
+ +
+ } + if (payStatus.status === PreparePayResultType.InsufficientBalance) { + return +
+ {balance ? + Your balance of {amountToString(balance)} is not enough to pay for this purchase + : + Your balance is not enough to pay for this purchase. + } +
+
+ + {i18n.str`Withdraw digital cash`} + +
+ +
+ } + if (payStatus.status === PreparePayResultType.AlreadyConfirmed) { + return +
+ {payStatus.paid && contractTerms.fulfillment_message && } +
+ {!payStatus.paid && } +
+ } + return + } + return +

{i18n.str`Digital cash payment`}

+ {payStatus.status === PreparePayResultType.AlreadyConfirmed && + (payStatus.paid ? Already paid : Already confirmed ) + }
- {payStatus.status === PreparePayResultType.InsufficientBalance ? - : - + {payStatus.status !== PreparePayResultType.InsufficientBalance && Amounts.isNonZero(totalFees) && + } - {Amounts.isNonZero(totalFees) && } + {Amounts.isNonZero(totalFees) && + + + } {contractTerms.order_id && }
- {showQR &&
- - Scan the QR code or click here -
} -
- {payErrMsg ? ( -
-

Payment failed: {payErrMsg}

- -
- ) : ( - payStatus.status === PreparePayResultType.PaymentPossible ? - setShowQR(qr => !qr)}> - {!showQR ? i18n.str`Complete with mobile wallet` : i18n.str`Hide QR`} - - - {i18n.str`Confirm payment`} - - : ( - payStatus.status === PreparePayResultType.InsufficientBalance ? - setShowQR(qr => !qr)}> - {!showQR ? i18n.str`Pay with other device` : i18n.str`Hide QR`} - - - {i18n.str`No enough coins`} - - : - - {payStatus.contractTerms.fulfillment_message &&
- {payStatus.contractTerms.fulfillment_message} -
} - - {i18n.str`Already paid`} - -
- - ) - )} + -
} function amountToString(text: AmountLike) { const aj = Amounts.jsonifyAmount(text) - const amount = Amounts.stringifyValue(aj) + const amount = Amounts.stringifyValue(aj, 2) return `${amount} ${aj.currency}` } diff --git a/packages/taler-wallet-webextension/src/hooks/useBalances.tsx b/packages/taler-wallet-webextension/src/hooks/useBalances.tsx index f12fca21c..503b7a492 100644 --- a/packages/taler-wallet-webextension/src/hooks/useBalances.tsx +++ b/packages/taler-wallet-webextension/src/hooks/useBalances.tsx @@ -32,7 +32,6 @@ export type BalancesHook = BalancesHookOk | BalancesHookError | undefined; export function useBalances(): BalancesHook { const [balance, setBalance] = useState(undefined); - console.log('render balance') useEffect(() => { async function checkBalance() { try { -- cgit v1.2.3