From 451dd746daeb57cfe0a601d1bf1f2b5506a5fc3c Mon Sep 17 00:00:00 2001 From: Sebastian Date: Wed, 27 Apr 2022 14:33:52 -0300 Subject: toggle permission --- .../src/hooks/useExtendedPermissions.ts | 37 ++++++++++++++-------- 1 file changed, 24 insertions(+), 13 deletions(-) (limited to 'packages/taler-wallet-webextension/src/hooks') diff --git a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts index 18283995f..e3ea56d1b 100644 --- a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts +++ b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts @@ -17,23 +17,32 @@ import { useState, useEffect } from "preact/hooks"; import * as wxApi from "../wxApi.js"; import { platform } from "../platform/api.js"; -import { getReadRequestPermissions } from "../permissions.js"; +import { ToggleHandler } from "../mui/handlers.js"; +import { TalerError } from "@gnu-taler/taler-wallet-core"; -export function useExtendedPermissions(): [boolean, () => Promise] { +export function useExtendedPermissions(): ToggleHandler { const [enabled, setEnabled] = useState(false); - + const [error, setError] = useState(); const toggle = async (): Promise => { - return handleExtendedPerm(enabled, setEnabled) + return handleExtendedPerm(enabled, setEnabled).catch(e => { + setError(TalerError.fromException(e)) + }) }; useEffect(() => { async function getExtendedPermValue(): Promise { - const res = await wxApi.getExtendedPermissions(); + const res = await wxApi.containsHeaderListener(); setEnabled(res.newValue); } getExtendedPermValue(); }, []); - return [enabled, toggle]; + return { + value: enabled, + button: { + onClick: toggle, + error + } + }; } async function handleExtendedPerm(isEnabled: boolean, onChange: (value: boolean) => void): Promise { @@ -42,18 +51,20 @@ async function handleExtendedPerm(isEnabled: boolean, onChange: (value: boolean) // as the result of an input event ... let granted: boolean; try { - granted = await platform.getPermissionsApi().request(getReadRequestPermissions()); + granted = await platform.getPermissionsApi().requestHostPermissions(); } catch (lastError) { - console.error("error requesting permissions"); - console.error(lastError); onChange(false); - return + throw lastError; } - console.log("permissions granted:", granted); - const res = await wxApi.setExtendedPermissions(granted); + const res = await wxApi.toggleHeaderListener(granted); onChange(res.newValue); } else { - await wxApi.setExtendedPermissions(false).then(r => onChange(r.newValue)); + try { + await wxApi.toggleHeaderListener(false).then(r => onChange(r.newValue)); + } catch (e) { + console.log(e) + } + } return } -- cgit v1.2.3