@@ -57,11 +57,16 @@ const createNativeFileService = ({
57
57
mediaLibraryModule : typeof CameraRoll ;
58
58
fsModule : typeof FileAccess ;
59
59
} ) : 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 ] ,
62
62
android : [ permissionModule . PERMISSIONS . ANDROID . CAMERA ] ,
63
63
default : [ ] ,
64
64
} ) ;
65
+ const optionalPermissions : Permission [ ] = Platform . select ( {
66
+ ios : [ permissionModule . PERMISSIONS . IOS . MICROPHONE ] ,
67
+ android : [ ] ,
68
+ default : [ ] ,
69
+ } ) ;
65
70
const mediaLibraryPermissions : Permission [ ] = Platform . select ( {
66
71
ios : [ permissionModule . PERMISSIONS . IOS . PHOTO_LIBRARY , permissionModule . PERMISSIONS . IOS . PHOTO_LIBRARY_ADD_ONLY ] ,
67
72
android : getAndroidStoragePermissionsByAPILevel ( permissionModule ) ,
@@ -70,12 +75,15 @@ const createNativeFileService = ({
70
75
71
76
class NativeFileService implements FileServiceInterface {
72
77
async hasCameraPermission ( ) : Promise < boolean > {
73
- const status = await permissionModule . checkMultiple ( cameraPermissions ) ;
78
+ const status = await permissionModule . checkMultiple ( requiredPermissions ) ;
74
79
return nativePermissionGranted ( status ) ;
75
80
}
76
81
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 ;
79
87
}
80
88
async hasMediaLibraryPermission ( ) : Promise < boolean > {
81
89
const status = await permissionModule . checkMultiple ( mediaLibraryPermissions ) ;
0 commit comments