Skip to content

Commit f470079

Browse files
authored
Merge pull request #228 from sendbird/feat/camera-permission-check-only
[CLNP-6284] feat: require only camera permission when using camera feature
2 parents 01bcefd + 0ccf037 commit f470079

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
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);

sample/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,7 +1763,7 @@ SPEC CHECKSUMS:
17631763
Permission-PhotoLibrary: 03c52ed95dadfb0f2ba4c7663786cce0c4e0c978
17641764
Permission-PhotoLibraryAddOnly: c4fbf91806bbdc3ed877049bc09fbe58ad9a7c97
17651765
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
1766-
RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47
1766+
RCT-Folly: 5dc73daec3476616d19e8a53f0156176f7b55461
17671767
RCTDeprecation: 4c7eeb42be0b2e95195563c49be08d0b839d22b4
17681768
RCTRequired: d530a0f489699c8500e944fde963102c42dcd0c2
17691769
RCTTypeSafety: b20878506b094fa3d9007d7b9e4be0faa3562499
@@ -1836,7 +1836,7 @@ SPEC CHECKSUMS:
18361836
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
18371837
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
18381838
SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d
1839-
Yoga: 88480008ccacea6301ff7bf58726e27a72931c8d
1839+
Yoga: 04f1db30bb810187397fa4c37dd1868a27af229c
18401840
ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c
18411841

18421842
PODFILE CHECKSUM: 854e85b2bbfd7d0e442b6dea393d8c15cb83909e

0 commit comments

Comments
 (0)