@@ -57,11 +57,16 @@ const createNativeFileService = ({
5757 mediaLibraryModule : typeof CameraRoll ;
5858 fsModule : typeof FileAccess ;
5959} ) : FileServiceInterface => {
60- const cameraPermissions : Permission [ ] = Platform . select ( {
61- ios : [ permissionModule . PERMISSIONS . IOS . CAMERA , permissionModule . PERMISSIONS . IOS . MICROPHONE ] ,
60+ const requiredPermissions : Permission [ ] = Platform . select ( {
61+ ios : [ permissionModule . PERMISSIONS . IOS . CAMERA ] ,
6262 android : [ permissionModule . PERMISSIONS . ANDROID . CAMERA ] ,
6363 default : [ ] ,
6464 } ) ;
65+ const optionalPermissions : Permission [ ] = Platform . select ( {
66+ ios : [ permissionModule . PERMISSIONS . IOS . MICROPHONE ] ,
67+ android : [ ] ,
68+ default : [ ] ,
69+ } ) ;
6570 const mediaLibraryPermissions : Permission [ ] = Platform . select ( {
6671 ios : [ permissionModule . PERMISSIONS . IOS . PHOTO_LIBRARY , permissionModule . PERMISSIONS . IOS . PHOTO_LIBRARY_ADD_ONLY ] ,
6772 android : getAndroidStoragePermissionsByAPILevel ( permissionModule ) ,
@@ -70,12 +75,15 @@ const createNativeFileService = ({
7075
7176 class NativeFileService implements FileServiceInterface {
7277 async hasCameraPermission ( ) : Promise < boolean > {
73- const status = await permissionModule . checkMultiple ( cameraPermissions ) ;
78+ const status = await permissionModule . checkMultiple ( requiredPermissions ) ;
7479 return nativePermissionGranted ( status ) ;
7580 }
7681 async requestCameraPermission ( ) : Promise < boolean > {
77- const status = await permissionModule . requestMultiple ( cameraPermissions ) ;
78- return nativePermissionGranted ( status ) ;
82+ const requiredPermissionsStatus = await permissionModule . requestMultiple ( requiredPermissions ) ;
83+ if ( ! nativePermissionGranted ( requiredPermissionsStatus ) ) return false ;
84+
85+ await permissionModule . requestMultiple ( optionalPermissions ) ;
86+ return true ;
7987 }
8088 async hasMediaLibraryPermission ( ) : Promise < boolean > {
8189 const status = await permissionModule . checkMultiple ( mediaLibraryPermissions ) ;
0 commit comments