diff options
Diffstat (limited to 'packages/demobank-ui/src/pages/OperationState/state.ts')
-rw-r--r-- | packages/demobank-ui/src/pages/OperationState/state.ts | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/packages/demobank-ui/src/pages/OperationState/state.ts b/packages/demobank-ui/src/pages/OperationState/state.ts index ae03ed529..56e79f9ab 100644 --- a/packages/demobank-ui/src/pages/OperationState/state.ts +++ b/packages/demobank-ui/src/pages/OperationState/state.ts @@ -15,16 +15,15 @@ */ import { Amounts, HttpStatusCode, TranslatedString, parsePaytoUri, parseWithdrawUri, stringifyWithdrawUri } from "@gnu-taler/taler-util"; -import { ErrorType, RequestError, notify, notifyError, notifyInfo, useTranslationContext, utils } from "@gnu-taler/web-util/browser"; -import { useBackendContext } from "../../context/backend.js"; -import { useAccessAPI, useAccessAnonAPI, useAccountDetails, useWithdrawalDetails } from "../../hooks/access.js"; -import { Props, State } from "./index.js"; -import { useSettings } from "../../hooks/settings.js"; -import { buildRequestErrorMessage, undefinedIfEmpty } from "../../utils.js"; -import { useEffect, useMemo, useState } from "preact/hooks"; +import { RequestError, notify, notifyError, notifyInfo, useTranslationContext, utils } from "@gnu-taler/web-util/browser"; +import { useEffect, useState } from "preact/hooks"; +import { useAccessAPI, useAccessAnonAPI, useWithdrawalDetails } from "../../hooks/access.js"; import { getInitialBackendBaseURL } from "../../hooks/backend.js"; +import { useSettings } from "../../hooks/settings.js"; +import { buildRequestErrorMessage } from "../../utils.js"; +import { Props, State } from "./index.js"; -export function useComponentState({ currency, onClose,goToConfirmOperation }: Props): utils.RecursiveState<State> { +export function useComponentState({ currency, onClose }: Props): utils.RecursiveState<State> { const { i18n } = useTranslationContext(); const [settings, updateSettings] = useSettings() const { createWithdrawal } = useAccessAPI(); @@ -142,8 +141,8 @@ export function useComponentState({ currency, onClose,goToConfirmOperation }: Pr } } setBusy(undefined) - } - const bankIntegrationApiBaseUrl = `${baseUrl}/integration-api` + } + const bankIntegrationApiBaseUrl = `${baseUrl}/taler-integration` const uri = stringifyWithdrawUri({ bankIntegrationApiBaseUrl, withdrawalOperationId, @@ -160,7 +159,13 @@ export function useComponentState({ currency, onClose,goToConfirmOperation }: Pr return (): utils.RecursiveState<State> => { const result = useWithdrawalDetails(withdrawalOperationId); + const shouldCreateNewOperation = !result.ok && !result.loading && result.info.status === HttpStatusCode.NotFound + useEffect(() => { + if (shouldCreateNewOperation) { + doSilentStart() + } + }, []) if (!result.ok) { if (result.loading) { return { @@ -168,6 +173,12 @@ export function useComponentState({ currency, onClose,goToConfirmOperation }: Pr error: undefined } } + if (result.info.status === HttpStatusCode.NotFound) { + return { + status: "loading", + error: undefined, + } + } return { status: "loading-error", error: result @@ -178,7 +189,10 @@ export function useComponentState({ currency, onClose,goToConfirmOperation }: Pr return { status: "aborted", error: undefined, - onClose, + onClose: async () => { + updateSettings("currentWithdrawalOperationId", undefined) + onClose() + }, } } |