diff options
author | Sebastian <sebasjm@gmail.com> | 2023-10-23 07:11:18 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-10-23 07:11:18 -0300 |
commit | 66455014e08b229ff4d3ee9071fd7c82225cfcd6 (patch) | |
tree | c343e63f555ef3b12afd07c25d2f31f6273c21a5 /packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx | |
parent | 5e160a2d4d1d77c87600f28f806bc94c086267c7 (diff) | |
download | wallet-core-66455014e08b229ff4d3ee9071fd7c82225cfcd6.tar.xz |
admin ui
Diffstat (limited to 'packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx')
-rw-r--r-- | packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx b/packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx new file mode 100644 index 000000000..7ef2a6c39 --- /dev/null +++ b/packages/demobank-ui/src/pages/WithdrawalOperationPage.tsx @@ -0,0 +1,74 @@ +/* + This file is part of GNU Taler + (C) 2022 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +import { + Logger, + TranslatedString, + parseWithdrawUri, + stringifyWithdrawUri +} from "@gnu-taler/taler-util"; +import { + notifyError, + useTranslationContext +} from "@gnu-taler/web-util/browser"; +import { Fragment, VNode, h } from "preact"; +import { Loading } from "../components/Loading.js"; +import { useBankCoreApiContext } from "../context/config.js"; +import { useSettings } from "../hooks/settings.js"; +import { WithdrawalQRCode } from "./WithdrawalQRCode.js"; + +const logger = new Logger("AccountPage"); + +export function WithdrawalOperationPage({ + operationId, + onContinue, +}: { + operationId: string; + onContinue: () => void; +}): VNode { + //FIXME: libeufin sandbox should return show to create the integration api endpoint + //or return withdrawal uri from response + const { api } = useBankCoreApiContext() + const uri = stringifyWithdrawUri({ + bankIntegrationApiBaseUrl: api.getIntegrationAPI().baseUrl, + withdrawalOperationId: operationId, + }); + const parsedUri = parseWithdrawUri(uri); + const { i18n } = useTranslationContext(); + const [settings, updateSettings] = useSettings(); + + if (!parsedUri) { + notifyError( + i18n.str`The Withdrawal URI is not valid`, + uri as TranslatedString + ); + return <Loading />; + } + + return ( + <WithdrawalQRCode + withdrawUri={parsedUri} + onClose={() => { + updateSettings("currentWithdrawalOperationId", undefined) + onContinue() + }} + /> + ); +} + +export function assertUnreachable(x: never): never { + throw new Error("Didn't expect to get here"); +} |