diff options
Diffstat (limited to 'packages/demobank-ui/src/pages/OperationState/index.ts')
-rw-r--r-- | packages/demobank-ui/src/pages/OperationState/index.ts | 99 |
1 files changed, 62 insertions, 37 deletions
diff --git a/packages/demobank-ui/src/pages/OperationState/index.ts b/packages/demobank-ui/src/pages/OperationState/index.ts index 18ffe0ec3..20cb1760f 100644 --- a/packages/demobank-ui/src/pages/OperationState/index.ts +++ b/packages/demobank-ui/src/pages/OperationState/index.ts @@ -14,28 +14,46 @@ GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { AbsoluteTime, AmountJson, TalerCoreBankErrorsByMethod, TalerError, WithdrawUriResult } from "@gnu-taler/taler-util"; +import { + AbsoluteTime, + AmountJson, + TalerCoreBankErrorsByMethod, + TalerError, + WithdrawUriResult, +} from "@gnu-taler/taler-util"; import { Loading, utils } from "@gnu-taler/web-util/browser"; import { ErrorLoadingWithDebug } from "../../components/ErrorLoadingWithDebug.js"; import { useComponentState } from "./state.js"; -import { AbortedView, ConfirmedView, FailedView, InvalidPaytoView, InvalidReserveView, InvalidWithdrawalView, NeedConfirmationView, ReadyView } from "./views.js"; +import { + AbortedView, + ConfirmedView, + FailedView, + InvalidPaytoView, + InvalidReserveView, + InvalidWithdrawalView, + NeedConfirmationView, + ReadyView, +} from "./views.js"; +import { RouteDefinition } from "../../route.js"; export interface Props { currency: string; - onAuthorizationRequired: () => void, - onClose: () => void; + onAuthorizationRequired: () => void; + routeClose: RouteDefinition<Record<string, never>>; + onAbort: () => void; } -export type State = State.Loading | - State.LoadingError | - State.Ready | - State.Failed | - State.Aborted | - State.Confirmed | - State.InvalidPayto | - State.InvalidWithdrawal | - State.InvalidReserve | - State.NeedConfirmation; +export type State = + | State.Loading + | State.LoadingError + | State.Ready + | State.Failed + | State.Aborted + | State.Confirmed + | State.InvalidPayto + | State.InvalidWithdrawal + | State.InvalidReserve + | State.NeedConfirmation; export namespace State { export interface Loading { @@ -59,48 +77,55 @@ export namespace State { export interface Ready { status: "ready"; error: undefined; - uri: WithdrawUriResult, - onClose: () => Promise<TalerCoreBankErrorsByMethod<"abortWithdrawalById"> | undefined>; + uri: WithdrawUriResult; + onAbort: () => Promise< + TalerCoreBankErrorsByMethod<"abortWithdrawalById"> | undefined + >; + routeClose: RouteDefinition<Record<string, never>>; } export interface InvalidPayto { - status: "invalid-payto", + status: "invalid-payto"; error: undefined; payto: string | undefined; - onClose: () => void; } export interface InvalidWithdrawal { - status: "invalid-withdrawal", + status: "invalid-withdrawal"; error: undefined; - onClose: () => void; - uri: string, + uri: string; } export interface InvalidReserve { - status: "invalid-reserve", + status: "invalid-reserve"; error: undefined; - onClose: () => void; reserve: string | undefined; } export interface NeedConfirmation { - status: "need-confirmation", - onAuthorizationRequired: () => void, - account: string, - onAbort: undefined | (() => Promise<TalerCoreBankErrorsByMethod<"abortWithdrawalById"> | undefined>); - onConfirm: undefined | (() => Promise<TalerCoreBankErrorsByMethod<"confirmWithdrawalById"> | undefined>); + status: "need-confirmation"; + onAuthorizationRequired: () => void; + account: string; + onAbort: + | undefined + | (() => Promise< + TalerCoreBankErrorsByMethod<"abortWithdrawalById"> | undefined + >); + onConfirm: + | undefined + | (() => Promise< + TalerCoreBankErrorsByMethod<"confirmWithdrawalById"> | undefined + >); error: undefined; - id: string, + id: string; } export interface Aborted { - status: "aborted", + status: "aborted"; error: undefined; - onClose: () => void; + routeClose: RouteDefinition<Record<string, never>>; } export interface Confirmed { - status: "confirmed", + status: "confirmed"; error: undefined; - onClose: () => void; + routeClose: RouteDefinition<Record<string, never>>; } - } export interface Transaction { @@ -113,13 +138,13 @@ export interface Transaction { const viewMapping: utils.StateViewMap<State> = { loading: Loading, - "failed": FailedView, + failed: FailedView, "invalid-payto": InvalidPaytoView, "invalid-withdrawal": InvalidWithdrawalView, "invalid-reserve": InvalidReserveView, "need-confirmation": NeedConfirmationView, - "aborted": AbortedView, - "confirmed": ConfirmedView, + aborted: AbortedView, + confirmed: ConfirmedView, "loading-error": ErrorLoadingWithDebug, ready: ReadyView, }; |