2022-08-31 05:20:35 +02:00
|
|
|
/*
|
|
|
|
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/>
|
|
|
|
*/
|
|
|
|
|
2022-09-11 04:21:44 +02:00
|
|
|
import { Fragment, h, VNode } from "preact";
|
2022-08-31 05:20:35 +02:00
|
|
|
import { Amount } from "../../components/Amount.js";
|
|
|
|
import { ErrorTalerOperation } from "../../components/ErrorTalerOperation.js";
|
|
|
|
import { LoadingError } from "../../components/LoadingError.js";
|
|
|
|
import { LogoHeader } from "../../components/LogoHeader.js";
|
|
|
|
import { Part } from "../../components/Part.js";
|
2022-09-13 16:07:39 +02:00
|
|
|
import { Link, SubTitle, WalletAction } from "../../components/styled/index.js";
|
2022-08-31 16:46:39 +02:00
|
|
|
import { Time } from "../../components/Time.js";
|
2022-08-31 05:20:35 +02:00
|
|
|
import { useTranslationContext } from "../../context/translation.js";
|
2023-01-04 15:24:58 +01:00
|
|
|
import { PaymentButtons } from "../../components/PaymentButtons";
|
2022-08-31 05:20:35 +02:00
|
|
|
import { State } from "./index.js";
|
|
|
|
|
|
|
|
export function LoadingUriView({ error }: State.LoadingUriError): VNode {
|
|
|
|
const { i18n } = useTranslationContext();
|
|
|
|
|
|
|
|
return (
|
|
|
|
<LoadingError
|
|
|
|
title={<i18n.Translate>Could not load</i18n.Translate>}
|
|
|
|
error={error}
|
|
|
|
/>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2022-09-11 04:21:44 +02:00
|
|
|
export function ReadyView(
|
|
|
|
state: State.Ready | State.NoBalanceForCurrency | State.NoEnoughBalance,
|
|
|
|
): VNode {
|
2022-08-31 05:20:35 +02:00
|
|
|
const { i18n } = useTranslationContext();
|
2022-09-11 04:21:44 +02:00
|
|
|
const {
|
|
|
|
operationError,
|
|
|
|
summary,
|
|
|
|
amount,
|
|
|
|
expiration,
|
|
|
|
uri,
|
|
|
|
status,
|
|
|
|
balance,
|
|
|
|
payStatus,
|
|
|
|
cancel,
|
|
|
|
} = state;
|
2022-08-31 05:20:35 +02:00
|
|
|
return (
|
|
|
|
<WalletAction>
|
|
|
|
<LogoHeader />
|
|
|
|
<SubTitle>
|
|
|
|
<i18n.Translate>Digital invoice</i18n.Translate>
|
|
|
|
</SubTitle>
|
|
|
|
{operationError && (
|
|
|
|
<ErrorTalerOperation
|
|
|
|
title={
|
|
|
|
<i18n.Translate>
|
|
|
|
Could not finish the payment operation
|
|
|
|
</i18n.Translate>
|
|
|
|
}
|
|
|
|
error={operationError}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
<section style={{ textAlign: "left" }}>
|
2022-08-31 16:46:39 +02:00
|
|
|
<Part
|
|
|
|
title={<i18n.Translate>Subject</i18n.Translate>}
|
|
|
|
text={<div>{summary}</div>}
|
|
|
|
/>
|
2022-08-31 05:20:35 +02:00
|
|
|
<Part
|
|
|
|
title={<i18n.Translate>Amount</i18n.Translate>}
|
|
|
|
text={<Amount value={amount} />}
|
|
|
|
/>
|
2022-08-31 16:46:39 +02:00
|
|
|
<Part
|
|
|
|
title={<i18n.Translate>Valid until</i18n.Translate>}
|
|
|
|
text={<Time timestamp={expiration} format="dd MMMM yyyy, HH:mm" />}
|
|
|
|
kind="neutral"
|
|
|
|
/>
|
2022-08-31 05:20:35 +02:00
|
|
|
</section>
|
2023-01-04 15:24:58 +01:00
|
|
|
<PaymentButtons
|
2022-09-11 04:21:44 +02:00
|
|
|
amount={amount}
|
|
|
|
balance={balance}
|
|
|
|
payStatus={payStatus}
|
|
|
|
uri={uri}
|
|
|
|
payHandler={status === "ready" ? state.accept : undefined}
|
|
|
|
goToWalletManualWithdraw={state.goToWalletManualWithdraw}
|
|
|
|
/>
|
2022-08-31 16:46:39 +02:00
|
|
|
<section>
|
|
|
|
<Link upperCased onClick={cancel.onClick}>
|
|
|
|
<i18n.Translate>Cancel</i18n.Translate>
|
|
|
|
</Link>
|
|
|
|
</section>
|
2022-08-31 05:20:35 +02:00
|
|
|
</WalletAction>
|
|
|
|
);
|
|
|
|
}
|