From 1e39c57cb972c6de224c177dd28ae3a315fbe590 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 24 Oct 2022 11:12:28 -0300 Subject: wallet dev mode and backup into devmode --- .../src/hooks/useWalletDevMode.ts | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts (limited to 'packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts') diff --git a/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts b/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts new file mode 100644 index 000000000..8021db686 --- /dev/null +++ b/packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts @@ -0,0 +1,55 @@ +/* + 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 + */ + +import { useState, useEffect } from "preact/hooks"; +import { wxClient } from "../wxApi.js"; +import { ToggleHandler } from "../mui/handlers.js"; +import { TalerError, WalletApiOperation } from "@gnu-taler/taler-wallet-core"; + +export function useWalletDevMode(): ToggleHandler { + const [enabled, setEnabled] = useState(undefined); + const [error, setError] = useState(); + const toggle = async (): Promise => { + return handleOpen(enabled, setEnabled).catch((e) => { + setError(TalerError.fromException(e)); + }); + }; + + useEffect(() => { + async function getValue(): Promise { + const res = await wxClient.call(WalletApiOperation.GetVersion, {}); + setEnabled(res.devMode); + } + getValue(); + }, []); + return { + value: enabled, + button: { + onClick: enabled === undefined ? undefined : toggle, + error, + }, + }; +} + +async function handleOpen( + currentValue: undefined | boolean, + onChange: (value: boolean) => void, +): Promise { + const nextValue = !currentValue + await wxClient.call(WalletApiOperation.SetDevMode, { devModeEnabled: nextValue }); + onChange(nextValue); + return; +} -- cgit v1.2.3