diff options
author | Sebastian <sebasjm@gmail.com> | 2022-10-24 11:12:28 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-10-24 11:12:28 -0300 |
commit | 1e39c57cb972c6de224c177dd28ae3a315fbe590 (patch) | |
tree | 0c2869e59837aefcd7a7231271be2f6350ee0151 /packages/taler-wallet-webextension/src/hooks | |
parent | 7a80d33414e1bcac51b4704b30499b781fffc064 (diff) | |
download | wallet-core-1e39c57cb972c6de224c177dd28ae3a315fbe590.tar.xz |
wallet dev mode and backup into devmode
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks')
-rw-r--r-- | packages/taler-wallet-webextension/src/hooks/useWalletDevMode.ts | 55 |
1 files changed, 55 insertions, 0 deletions
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 <http://www.gnu.org/licenses/> + */ + +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 | boolean>(undefined); + const [error, setError] = useState<TalerError | undefined>(); + const toggle = async (): Promise<void> => { + return handleOpen(enabled, setEnabled).catch((e) => { + setError(TalerError.fromException(e)); + }); + }; + + useEffect(() => { + async function getValue(): Promise<void> { + 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<void> { + const nextValue = !currentValue + await wxClient.call(WalletApiOperation.SetDevMode, { devModeEnabled: nextValue }); + onChange(nextValue); + return; +} |