diff options
author | Sebastian <sebasjm@gmail.com> | 2022-02-01 13:26:56 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-02-16 15:16:21 -0300 |
commit | bc1c33e1ce4ea760fb87de0dee66ca22cce9b7b7 (patch) | |
tree | b3399f442e3708ef92436eca1b0d1e2380ceb47a /packages/taler-wallet-webextension/src/hooks | |
parent | 54d5cc02d1a7c54758f3a391385e1f8684fde108 (diff) | |
download | wallet-core-bc1c33e1ce4ea760fb87de0dee66ca22cce9b7b7.tar.xz |
fix remove provider from backup and #7167
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks')
-rw-r--r-- | packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts index 12a913b1f..6bf6a7bdf 100644 --- a/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts +++ b/packages/taler-wallet-webextension/src/hooks/useExtendedPermissions.ts @@ -19,11 +19,11 @@ import * as wxApi from "../wxApi"; import { getPermissionsApi } from "../compat"; import { getReadRequestPermissions } from "../permissions"; -export function useExtendedPermissions(): [boolean, () => void] { +export function useExtendedPermissions(): [boolean, () => Promise<void>] { const [enabled, setEnabled] = useState(false); - const toggle = () => { - handleExtendedPerm(enabled, setEnabled) + const toggle = async () => { + return handleExtendedPerm(enabled, setEnabled) }; useEffect(() => { @@ -36,22 +36,29 @@ export function useExtendedPermissions(): [boolean, () => void] { return [enabled, toggle]; } -function handleExtendedPerm(isEnabled: boolean, onChange: (value: boolean) => void): 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 ... - getPermissionsApi().request(getReadRequestPermissions(), async (granted: boolean) => { - if (chrome.runtime.lastError) { - console.error("error requesting permissions"); - console.error(chrome.runtime.lastError); - onChange(false); - return; - } - console.log("permissions granted:", granted); - const res = await wxApi.setExtendedPermissions(granted); - onChange(res.newValue); - }); - } else { - wxApi.setExtendedPermissions(false).then(r => onChange(r.newValue)); + return new Promise<void>((res) => { + getPermissionsApi().request(getReadRequestPermissions(), async (granted: boolean) => { + console.log("permissions granted:", granted); + if (chrome.runtime.lastError) { + console.error("error requesting permissions"); + console.error(chrome.runtime.lastError); + onChange(false); + return; + } + try { + const res = await wxApi.setExtendedPermissions(granted); + onChange(res.newValue); + } finally { + res() + } + + }); + }) } + await wxApi.setExtendedPermissions(false).then(r => onChange(r.newValue)); + return } |