diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts')
-rw-r--r-- | packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts b/packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts index 2cdc8d2e1..f5a8c8814 100644 --- a/packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts +++ b/packages/taler-wallet-webextension/src/cta/PaymentTemplate/index.ts @@ -20,12 +20,25 @@ import { ErrorAlert } from "../../context/alert.js"; import { compose, StateViewMap } from "../../utils/index.js"; import { useComponentState } from "./state.js"; import { ReadyView } from "./views.js"; +import { PaymentPage } from "../Payment/index.js"; +import { + AmountFieldHandler, + ButtonHandler, + TextFieldHandler, +} from "../../mui/handlers.js"; export interface Props { - talerTemplateUri?: string; + talerTemplateUri: string; + goToWalletManualWithdraw: (amount?: string) => Promise<void>; + cancel: () => Promise<void>; + onSuccess: (tx: string) => Promise<void>; } -export type State = State.Loading | State.LoadingUriError | State.Ready; +export type State = + | State.Loading + | State.LoadingUriError + | State.OrderReady + | State.FillTemplate; export namespace State { export interface Loading { @@ -37,16 +50,30 @@ export namespace State { error: ErrorAlert; } - export interface Ready { - status: "ready"; + export interface FillTemplate { + status: "fill-template"; error: undefined; + currency: string; + amount?: AmountFieldHandler; + summary?: TextFieldHandler; + onCreate: ButtonHandler; + } + + export interface OrderReady { + status: "order-ready"; + error: undefined; + talerPayUri: string; + onSuccess: (tx: string) => Promise<void>; + cancel: () => Promise<void>; + goToWalletManualWithdraw: () => Promise<void>; } } const viewMapping: StateViewMap<State> = { loading: Loading, error: ErrorAlertView, - ready: ReadyView, + "fill-template": ReadyView, + "order-ready": PaymentPage, }; export const PaymentTemplatePage = compose( |