From df6a712834326d62fdac3fe459bcd1eb23bf5010 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Mon, 20 Mar 2023 15:16:56 -0500 Subject: Request permissions properly on mobile (closes #308) (#328) --- src/lib/hooks/usePermissions.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/lib/hooks/usePermissions.ts') diff --git a/src/lib/hooks/usePermissions.ts b/src/lib/hooks/usePermissions.ts index 19a420d9e..7849949c5 100644 --- a/src/lib/hooks/usePermissions.ts +++ b/src/lib/hooks/usePermissions.ts @@ -23,7 +23,7 @@ const openPermissionAlert = (perm: string) => { } export function usePhotoLibraryPermission() { - const [mediaLibraryPermissions] = MediaLibrary.usePermissions() + const [res, requestPermission] = MediaLibrary.usePermissions() const requestPhotoAccessIfNeeded = async () => { // On the, we use to produce a filepicker // This does not need any permission granting. @@ -31,8 +31,11 @@ export function usePhotoLibraryPermission() { return true } - if (mediaLibraryPermissions?.status === 'granted') { + if (res?.granted) { return true + } else if (!res || res?.status === 'undetermined' || res?.canAskAgain) { + const updatedRes = await requestPermission() + return updatedRes?.granted } else { openPermissionAlert('photo library') return false @@ -42,11 +45,14 @@ export function usePhotoLibraryPermission() { } export function useCameraPermission() { - const [cameraPermissionStatus] = Camera.useCameraPermissions() + const [res, requestPermission] = Camera.useCameraPermissions() const requestCameraAccessIfNeeded = async () => { - if (cameraPermissionStatus?.granted) { + if (res?.granted) { return true + } else if (!res || res?.status === 'undetermined' || res?.canAskAgain) { + const updatedRes = await requestPermission() + return updatedRes?.granted } else { openPermissionAlert('camera') return false -- cgit 1.4.1