diff --git a/packages/uikit-react-native/src/platform/createFileService.native.ts b/packages/uikit-react-native/src/platform/createFileService.native.ts index 92f3fbac..28ec7adf 100644 --- a/packages/uikit-react-native/src/platform/createFileService.native.ts +++ b/packages/uikit-react-native/src/platform/createFileService.native.ts @@ -57,11 +57,16 @@ const createNativeFileService = ({ mediaLibraryModule: typeof CameraRoll; fsModule: typeof FileAccess; }): FileServiceInterface => { - const cameraPermissions: Permission[] = Platform.select({ - ios: [permissionModule.PERMISSIONS.IOS.CAMERA, permissionModule.PERMISSIONS.IOS.MICROPHONE], + const requiredPermissions: Permission[] = Platform.select({ + ios: [permissionModule.PERMISSIONS.IOS.CAMERA], android: [permissionModule.PERMISSIONS.ANDROID.CAMERA], default: [], }); + const optionalPermissions: Permission[] = Platform.select({ + ios: [permissionModule.PERMISSIONS.IOS.MICROPHONE], + android: [], + default: [], + }); const mediaLibraryPermissions: Permission[] = Platform.select({ ios: [permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY, permissionModule.PERMISSIONS.IOS.PHOTO_LIBRARY_ADD_ONLY], android: getAndroidStoragePermissionsByAPILevel(permissionModule), @@ -70,12 +75,15 @@ const createNativeFileService = ({ class NativeFileService implements FileServiceInterface { async hasCameraPermission(): Promise { - const status = await permissionModule.checkMultiple(cameraPermissions); + const status = await permissionModule.checkMultiple(requiredPermissions); return nativePermissionGranted(status); } async requestCameraPermission(): Promise { - const status = await permissionModule.requestMultiple(cameraPermissions); - return nativePermissionGranted(status); + const requiredPermissionsStatus = await permissionModule.requestMultiple(requiredPermissions); + if (!nativePermissionGranted(requiredPermissionsStatus)) return false; + + await permissionModule.requestMultiple(optionalPermissions); + return true; } async hasMediaLibraryPermission(): Promise { const status = await permissionModule.checkMultiple(mediaLibraryPermissions); diff --git a/sample/ios/Podfile.lock b/sample/ios/Podfile.lock index bddf6dfd..c3691710 100644 --- a/sample/ios/Podfile.lock +++ b/sample/ios/Podfile.lock @@ -1763,7 +1763,7 @@ SPEC CHECKSUMS: Permission-PhotoLibrary: 03c52ed95dadfb0f2ba4c7663786cce0c4e0c978 Permission-PhotoLibraryAddOnly: c4fbf91806bbdc3ed877049bc09fbe58ad9a7c97 PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 + RCT-Folly: 5dc73daec3476616d19e8a53f0156176f7b55461 RCTDeprecation: 4c7eeb42be0b2e95195563c49be08d0b839d22b4 RCTRequired: d530a0f489699c8500e944fde963102c42dcd0c2 RCTTypeSafety: b20878506b094fa3d9007d7b9e4be0faa3562499 @@ -1836,7 +1836,7 @@ SPEC CHECKSUMS: SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: 88480008ccacea6301ff7bf58726e27a72931c8d + Yoga: 04f1db30bb810187397fa4c37dd1868a27af229c ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c PODFILE CHECKSUM: 854e85b2bbfd7d0e442b6dea393d8c15cb83909e