Skip to content

Commit 2a10efb

Browse files
committed
feat: require only camera permission when using camera feature
1 parent 01bcefd commit 2a10efb

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

packages/uikit-react-native/src/platform/createFileService.native.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)