diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx')
-rw-r--r-- | packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx | 126 |
1 files changed, 20 insertions, 106 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx b/packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx index a92ece066..b0602d1e6 100644 --- a/packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx +++ b/packages/taler-wallet-webextension/src/wallet/ExchangeAddConfirm.tsx @@ -17,10 +17,9 @@ import { Fragment, h, VNode } from "preact"; import { useState } from "preact/hooks"; import { Title } from "../components/styled/index.js"; import { useTranslationContext } from "../context/translation.js"; -import { TermsOfServiceSection } from "../cta/TermsOfServiceSection.js"; +import { TermsOfService } from "../cta/TermsOfService/index.js"; import { useAsyncAsHook } from "../hooks/useAsyncAsHook.js"; import { Button } from "../mui/Button.js"; -import { buildTermsOfServiceState, TermsState } from "../utils/index.js"; import * as wxApi from "../wxApi.js"; export interface Props { @@ -34,69 +33,9 @@ export function ExchangeAddConfirmPage({ onCancel, onConfirm, }: Props): VNode { - const detailsHook = useAsyncAsHook(async () => { - const tos = await wxApi.getExchangeTos(url, ["text/xml"]); - - const tosState = buildTermsOfServiceState(tos); - - return { tos: tosState }; - }); - - const termsNotFound: TermsState = { - status: "notfound", - version: "", - content: undefined, - }; - const terms = !detailsHook - ? undefined - : detailsHook.hasError - ? termsNotFound - : detailsHook.response.tos; - - // const [errorAccepting, setErrorAccepting] = useState<string | undefined>( - // undefined, - // ); - - const onAccept = async (): Promise<void> => { - if (!terms) return; - try { - await wxApi.setExchangeTosAccepted(url, terms.version); - } catch (e) { - if (e instanceof Error) { - // setErrorAccepting(e.message); - } - } - }; - return ( - <View - url={url} - onAccept={onAccept} - onCancel={onCancel} - onConfirm={onConfirm} - terms={terms} - /> - ); -} - -export interface ViewProps { - url: string; - terms: TermsState | undefined; - onAccept: (b: boolean) => Promise<void>; - onCancel: () => Promise<void>; - onConfirm: () => Promise<void>; -} - -export function View({ - url, - terms, - onAccept: doAccept, - onConfirm, - onCancel, -}: ViewProps): VNode { const { i18n } = useTranslationContext(); - const needsReview = - !terms || terms.status === "changed" || terms.status === "new"; - const [reviewed, setReviewed] = useState<boolean>(false); + + const [accepted, setAccepted] = useState(false); return ( <Fragment> @@ -111,52 +50,27 @@ export function View({ </a> </div> </section> - {terms && ( - <TermsOfServiceSection - reviewed={reviewed} - reviewing={true} - terms={terms} - onAccept={(value) => - doAccept(value).then(() => { - setReviewed(value); - }) - } - /> - )} + + <TermsOfService key="terms" exchangeUrl={url} onChange={setAccepted} /> <footer> - <Button variant="contained" color="secondary" onClick={onCancel}> + <Button + key="cancel" + variant="contained" + color="secondary" + onClick={onCancel} + > <i18n.Translate>Cancel</i18n.Translate> </Button> - {!terms && ( - <Button variant="contained" disabled> - <i18n.Translate>Loading terms..</i18n.Translate> - </Button> - )} - {terms && ( - <Fragment> - {needsReview && !reviewed && ( - <Button - variant="contained" - color="success" - disabled - onClick={onConfirm} - > - <i18n.Translate>Add exchange</i18n.Translate> - </Button> - )} - {(terms.status === "accepted" || (needsReview && reviewed)) && ( - <Button variant="contained" color="success" onClick={onConfirm}> - <i18n.Translate>Add exchange</i18n.Translate> - </Button> - )} - {terms.status === "notfound" && ( - <Button variant="contained" color="warning" onClick={onConfirm}> - <i18n.Translate>Add exchange anyway</i18n.Translate> - </Button> - )} - </Fragment> - )} + <Button + key="add" + variant="contained" + color="success" + disabled={!accepted} + onClick={onConfirm} + > + <i18n.Translate>Add exchange</i18n.Translate> + </Button> </footer> </Fragment> ); |