aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts')
-rw-r--r--packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts136
1 files changed, 0 insertions, 136 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts b/packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts
deleted file mode 100644
index 4e89bc243..000000000
--- a/packages/taler-wallet-webextension/src/cta/TermsOfService/state.ts
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- 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/>
- */
-
-import { useState } from "preact/hooks";
-import { useAsyncAsHook } from "../../hooks/useAsyncAsHook.js";
-import * as wxApi from "../../wxApi.js";
-import { Props, State } from "./index.js";
-import { buildTermsOfServiceState } from "./utils.js";
-
-export function useComponentState(
- { exchangeUrl, readOnly, onChange }: Props,
- api: typeof wxApi,
-): State {
- const [showContent, setShowContent] = useState<boolean>(false);
- // const [accepted, setAccepted] = useState<boolean>(false);
- const [errorAccepting, setErrorAccepting] = useState<Error | undefined>(
- undefined,
- );
-
- /**
- * For the exchange selected, bring the status of the terms of service
- */
- const terms = useAsyncAsHook(async () => {
- const exchangeTos = await api.getExchangeTos(exchangeUrl, ["text/xml"]);
-
- const state = buildTermsOfServiceState(exchangeTos);
-
- return { state };
- }, []);
-
- if (!terms) {
- return {
- status: "loading",
- error: undefined,
- };
- }
- if (terms.hasError) {
- return {
- status: "loading-error",
- error: terms,
- };
- }
-
- if (errorAccepting) {
- return {
- status: "error-accepting",
- error: {
- hasError: true,
- operational: false,
- message: errorAccepting.message,
- },
- };
- }
-
- const { state } = terms.response;
-
- async function onUpdate(accepted: boolean): Promise<void> {
- if (!state) return;
-
- try {
- if (accepted) {
- await api.setExchangeTosAccepted(exchangeUrl, state.version);
- } else {
- // mark as not accepted
- await api.setExchangeTosAccepted(exchangeUrl, undefined);
- }
- // setAccepted(accepted);
- onChange(accepted); //external update
- } catch (e) {
- if (e instanceof Error) {
- //FIXME: uncomment this and display error
- // setErrorAccepting(e.message);
- setErrorAccepting(e);
- }
- }
- }
-
- const accepted = state.status === "accepted";
-
- const base: State.BaseInfo = {
- error: undefined,
- showingTermsOfService: {
- value: showContent,
- button: {
- onClick: readOnly
- ? undefined
- : async () => {
- setShowContent(!showContent);
- },
- },
- },
- terms: state,
- termsAccepted: {
- value: accepted,
- button: {
- onClick: async () => {
- const newValue = !accepted; //toggle
- onUpdate(newValue);
- setShowContent(false);
- },
- },
- },
- };
-
- if (showContent) {
- return {
- status: "show-content",
- ...base,
- };
- }
- //showing buttons
- if (accepted) {
- return {
- status: "show-buttons-accepted",
- ...base,
- };
- } else {
- return {
- status: "show-buttons-not-accepted",
- ...base,
- };
- }
-}