diff options
author | Sebastian <sebasjm@gmail.com> | 2022-09-16 16:03:58 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-09-16 16:03:58 -0300 |
commit | 59d235e8d29159bc8caccf8bee6a2bca8b0b90dc (patch) | |
tree | 551261c860b1989dc0b1a05ddcfd53d20e561626 /packages/taler-wallet-webextension/src/cta/InvoiceCreate | |
parent | 6ddb2de84245ae3914c92b2b2eb7399e7f04500e (diff) | |
download | wallet-core-59d235e8d29159bc8caccf8bee6a2bca8b0b90dc.tar.xz |
redirect after success #7357
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/InvoiceCreate')
4 files changed, 8 insertions, 72 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts index fe0b0f5f7..f7d6fbe63 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/index.ts @@ -17,7 +17,7 @@ import { Loading } from "../../components/Loading.js"; import { HookError } from "../../hooks/useAsyncAsHook.js"; import { compose, StateViewMap } from "../../utils/index.js"; -import { LoadingUriView, ReadyView, CreatedView } from "./views.js"; +import { LoadingUriView, ReadyView } from "./views.js"; import * as wxApi from "../../wxApi.js"; import { useComponentState } from "./state.js"; import { AmountJson, TalerErrorDetail } from "@gnu-taler/taler-util"; @@ -26,12 +26,12 @@ import { ButtonHandler, TextFieldHandler } from "../../mui/handlers.js"; export interface Props { amount: string; onClose: () => Promise<void>; + onSuccess: (tx: string) => Promise<void>; } export type State = | State.Loading | State.LoadingUriError - | State.Created | State.Ready; export namespace State { @@ -49,11 +49,6 @@ export namespace State { error: undefined; cancel: ButtonHandler; } - export interface Created extends BaseInfo { - status: "created"; - talerUri: string; - copyToClipboard: ButtonHandler; - } export interface Ready extends BaseInfo { status: "ready"; create: ButtonHandler; @@ -70,7 +65,6 @@ export namespace State { const viewMapping: StateViewMap<State> = { loading: Loading, "loading-uri": LoadingUriView, - created: CreatedView, ready: ReadyView, }; diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts index 8f57582d6..a338387de 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/state.ts @@ -22,13 +22,12 @@ import * as wxApi from "../../wxApi.js"; import { Props, State } from "./index.js"; export function useComponentState( - { amount: amountStr, onClose }: Props, + { amount: amountStr, onClose, onSuccess }: Props, api: typeof wxApi, ): State { const amount = Amounts.parseOrThrow(amountStr); const [subject, setSubject] = useState(""); - const [talerUri, setTalerUri] = useState(""); const hook = useAsyncAsHook(api.listExchanges); const [exchangeIdx, setExchangeIdx] = useState("0"); @@ -49,22 +48,6 @@ export function useComponentState( }; } - if (talerUri) { - return { - status: "created", - talerUri, - error: undefined, - cancel: { - onClick: onClose, - }, - copyToClipboard: { - onClick: async () => { - navigator.clipboard.writeText(talerUri); - }, - }, - }; - } - const exchanges = hook.response.exchanges.filter( (e) => e.currency === amount.currency, ); @@ -74,7 +57,7 @@ export function useComponentState( ); const selected = exchanges[Number(exchangeIdx)]; - async function accept(): Promise<string> { + async function accept(): Promise<void> { try { const resp = await api.initiatePeerPullPayment({ amount: Amounts.stringify(amount), @@ -83,7 +66,8 @@ export function useComponentState( summary: subject, }, }); - return resp.talerUri; + + onSuccess(resp.transactionId); } catch (e) { if (e instanceof TalerError) { setOperationError(e.errorDetail); @@ -103,10 +87,7 @@ export function useComponentState( invalid: !subject || Amounts.isZero(amount), exchangeUrl: selected.exchangeBaseUrl, create: { - onClick: async () => { - const uri = await accept(); - setTalerUri(uri); - }, + onClick: accept }, cancel: { onClick: onClose, diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/stories.tsx b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/stories.tsx index 0adc29e78..b5a0a52e2 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/stories.tsx +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/stories.tsx @@ -20,19 +20,12 @@ */ import { createExample } from "../../test-utils.js"; -import { ReadyView, CreatedView } from "./views.js"; +import { ReadyView } from "./views.js"; export default { title: "wallet/invoice create", }; -export const ShowQr = createExample(CreatedView, { - talerUri: - "taler://pay-pull/exchange.taler.ar/HS585JK0QCXHJ8Z8QWZA3EBAY5WY7XNC1RR2MHJXSH2Z4WP0YPJ0", - cancel: {}, - copyToClipboard: {}, -}); - export const Ready = createExample(ReadyView, { chosenAmount: { currency: "ARS", diff --git a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/views.tsx b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/views.tsx index c5ed9a4cf..693c07713 100644 --- a/packages/taler-wallet-webextension/src/cta/InvoiceCreate/views.tsx +++ b/packages/taler-wallet-webextension/src/cta/InvoiceCreate/views.tsx @@ -45,38 +45,6 @@ export function LoadingUriView({ error }: State.LoadingUriError): VNode { ); } -export function CreatedView({ - talerUri, - copyToClipboard, - cancel, -}: State.Created): VNode { - const { i18n } = useTranslationContext(); - return ( - <WalletAction> - <LogoHeader /> - <SubTitle> - <i18n.Translate>Digital cash invoice</i18n.Translate> - </SubTitle> - <section> - <p> - <i18n.Translate>Show this QR to pay the invoice</i18n.Translate> - </p> - <QR text={talerUri} /> - </section> - <section> - or - <Button onClick={copyToClipboard.onClick}> - <i18n.Translate>Copy the invoice URI</i18n.Translate> - </Button> - </section> - <section> - <Link upperCased onClick={cancel.onClick}> - <i18n.Translate>Close</i18n.Translate> - </Link> - </section> - </WalletAction> - ); -} export function ReadyView({ invalid, |