diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks')
6 files changed, 55 insertions, 50 deletions
diff --git a/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts b/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts index 04a6dbb18..d13a68383 100644 --- a/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts +++ b/packages/taler-wallet-webextension/src/hooks/useAsyncAsHook.ts @@ -13,9 +13,7 @@ You should have received a copy of the GNU General Public License along with TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> */ -import { - NotificationType, TalerErrorDetail -} from "@gnu-taler/taler-util"; +import { NotificationType, TalerErrorDetail } from "@gnu-taler/taler-util"; import { TalerError } from "@gnu-taler/taler-wallet-core"; import { useEffect, useMemo, useState } from "preact/hooks"; import * as wxApi from "../wxApi.js"; @@ -44,19 +42,23 @@ interface WithRetry { } export type HookResponse<T> = HookOk<T> | HookError | undefined; -export type HookResponseWithRetry<T> = ((HookOk<T> | HookError) & WithRetry) | undefined; +export type HookResponseWithRetry<T> = + | ((HookOk<T> | HookError) & WithRetry) + | undefined; export function useAsyncAsHook<T>( fn: () => Promise<T | false>, deps?: any[], ): HookResponseWithRetry<T> { - const [result, setHookResponse] = useState<HookResponse<T>>(undefined); - const args = useMemo(() => ({ - fn - // eslint-disable-next-line react-hooks/exhaustive-deps - }), deps || []) + const args = useMemo( + () => ({ + fn, + // eslint-disable-next-line react-hooks/exhaustive-deps + }), + deps || [], + ); async function doAsync(): Promise<void> { try { diff --git a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts index e3ea56d1b..08bb39668 100644 --- a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts +++ b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts @@ -24,9 +24,9 @@ export function useExtendedPermissions(): ToggleHandler { const [enabled, setEnabled] = useState(false); const [error, setError] = useState<TalerError | undefined>(); const toggle = async (): Promise<void> => { - return handleExtendedPerm(enabled, setEnabled).catch(e => { - setError(TalerError.fromException(e)) - }) + return handleExtendedPerm(enabled, setEnabled).catch((e) => { + setError(TalerError.fromException(e)); + }); }; useEffect(() => { @@ -40,12 +40,15 @@ export function useExtendedPermissions(): ToggleHandler { value: enabled, button: { onClick: toggle, - error - } + error, + }, }; } -async function handleExtendedPerm(isEnabled: boolean, onChange: (value: boolean) => void): Promise<void> { +async function handleExtendedPerm( + isEnabled: boolean, + onChange: (value: boolean) => void, +): Promise<void> { if (!isEnabled) { // We set permissions here, since apparently FF wants this to be done // as the result of an input event ... @@ -60,11 +63,10 @@ async function handleExtendedPerm(isEnabled: boolean, onChange: (value: boolean) onChange(res.newValue); } else { try { - await wxApi.toggleHeaderListener(false).then(r => onChange(r.newValue)); + await wxApi.toggleHeaderListener(false).then((r) => onChange(r.newValue)); } catch (e) { - console.log(e) + console.log(e); } - } - return + return; } diff --git a/packages/taler-wallet-webextension/src/hooks/useLang.ts b/packages/taler-wallet-webextension/src/hooks/useLang.ts index 0436f25df..46f3e1188 100644 --- a/packages/taler-wallet-webextension/src/hooks/useLang.ts +++ b/packages/taler-wallet-webextension/src/hooks/useLang.ts @@ -17,12 +17,14 @@ import { useNotNullLocalStorage } from "./useLocalStorage.js"; function getBrowserLang(): string | undefined { - if (window.navigator.languages) return window.navigator.languages[0] - if (window.navigator.language) return window.navigator.language + if (window.navigator.languages) return window.navigator.languages[0]; + if (window.navigator.language) return window.navigator.language; return undefined; } -export function useLang(initial?: string): [string, (s: string) => void, boolean] { +export function useLang( + initial?: string, +): [string, (s: string) => void, boolean] { const defaultLang = (getBrowserLang() || initial || "en").substring(0, 2); return useNotNullLocalStorage("lang-preference", defaultLang); } diff --git a/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts b/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts index 31d54e451..ed0f1d2bb 100644 --- a/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts +++ b/packages/taler-wallet-webextension/src/hooks/useLocalStorage.ts @@ -25,13 +25,13 @@ export function useLocalStorage( key: string, initialValue?: string, ): [string | undefined, StateUpdater<string | undefined>] { - const [storedValue, setStoredValue] = useState<string | undefined>((): - | string - | undefined => { - return typeof window !== "undefined" - ? window.localStorage.getItem(key) || initialValue - : initialValue; - }); + const [storedValue, setStoredValue] = useState<string | undefined>( + (): string | undefined => { + return typeof window !== "undefined" + ? window.localStorage.getItem(key) || initialValue + : initialValue; + }, + ); const setValue = ( value?: string | ((val?: string) => string | undefined), diff --git a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts index 4893d43ff..7cf97265e 100644 --- a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts +++ b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.test.ts @@ -14,48 +14,47 @@ 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 { useTalerActionURL } from "./useTalerActionURL.js" +import { useTalerActionURL } from "./useTalerActionURL.js"; import { mountHook } from "../test-utils.js"; import { IoCProviderForTesting } from "../context/iocContext.js"; import { h, VNode } from "preact"; import { expect } from "chai"; -describe('useTalerActionURL hook', () => { - - it('should be set url to undefined when dismiss', async () => { - +describe("useTalerActionURL hook", () => { + it("should be set url to undefined when dismiss", async () => { const ctx = ({ children }: { children: any }): VNode => { return h(IoCProviderForTesting, { value: { findTalerUriInActiveTab: async () => "asd", - }, children - }) - } + }, + children, + }); + }; - const { getLastResultOrThrow, waitNextUpdate, assertNoPendingUpdate } = mountHook(useTalerActionURL, ctx) + const { getLastResultOrThrow, waitNextUpdate, assertNoPendingUpdate } = + mountHook(useTalerActionURL, ctx); { - const [url] = getLastResultOrThrow() + const [url] = getLastResultOrThrow(); expect(url).undefined; } - - await waitNextUpdate("waiting for useEffect") + await waitNextUpdate("waiting for useEffect"); { - const [url, setDismissed] = getLastResultOrThrow() + const [url, setDismissed] = getLastResultOrThrow(); expect(url).equals("asd"); - setDismissed(true) + setDismissed(true); } - await waitNextUpdate("after dismiss") + await waitNextUpdate("after dismiss"); { - const [url] = getLastResultOrThrow() - if (url !== undefined) throw Error('invalid') + const [url] = getLastResultOrThrow(); + if (url !== undefined) throw Error("invalid"); expect(url).undefined; } - await assertNoPendingUpdate() - }) -})
\ No newline at end of file + await assertNoPendingUpdate(); + }); +}); diff --git a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts index b2dd739e2..0a2ad4aa1 100644 --- a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts +++ b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts @@ -25,7 +25,7 @@ export function useTalerActionURL(): [ undefined, ); const [dismissed, setDismissed] = useState(false); - const { findTalerUriInActiveTab } = useIocContext() + const { findTalerUriInActiveTab } = useIocContext(); useEffect(() => { async function check(): Promise<void> { |