mirror of
https://github.com/status-im/react-native-image-crop-picker.git
synced 2025-02-22 18:38:13 +00:00
fix: Make sure to return precise + platform-consistent permission error code (#1506)
* fix: Make sure to return precise + platform-consistent permission error code * fix: Fix always-false conditions * fix: Remove silly typo
This commit is contained in:
parent
6b3b7f798d
commit
11265bfbc2
@ -63,9 +63,13 @@ class PickerModule extends ReactContextBaseJavaModule implements ActivityEventLi
|
|||||||
private static final String E_NO_IMAGE_DATA_FOUND = "E_NO_IMAGE_DATA_FOUND";
|
private static final String E_NO_IMAGE_DATA_FOUND = "E_NO_IMAGE_DATA_FOUND";
|
||||||
private static final String E_CAMERA_IS_NOT_AVAILABLE = "E_CAMERA_IS_NOT_AVAILABLE";
|
private static final String E_CAMERA_IS_NOT_AVAILABLE = "E_CAMERA_IS_NOT_AVAILABLE";
|
||||||
private static final String E_CANNOT_LAUNCH_CAMERA = "E_CANNOT_LAUNCH_CAMERA";
|
private static final String E_CANNOT_LAUNCH_CAMERA = "E_CANNOT_LAUNCH_CAMERA";
|
||||||
private static final String E_PERMISSIONS_MISSING = "E_PERMISSION_MISSING";
|
|
||||||
private static final String E_ERROR_WHILE_CLEANING_FILES = "E_ERROR_WHILE_CLEANING_FILES";
|
private static final String E_ERROR_WHILE_CLEANING_FILES = "E_ERROR_WHILE_CLEANING_FILES";
|
||||||
|
|
||||||
|
private static final String E_NO_LIBRARY_PERMISSION_KEY = "E_NO_LIBRARY_PERMISSION";
|
||||||
|
private static final String E_NO_LIBRARY_PERMISSION_MSG = "User did not grant library permission.";
|
||||||
|
private static final String E_NO_CAMERA_PERMISSION_KEY = "E_NO_CAMERA_PERMISSION";
|
||||||
|
private static final String E_NO_CAMERA_PERMISSION_MSG = "User did not grant camera permission.";
|
||||||
|
|
||||||
private String mediaType = "any";
|
private String mediaType = "any";
|
||||||
private boolean multiple = false;
|
private boolean multiple = false;
|
||||||
private boolean includeBase64 = false;
|
private boolean includeBase64 = false;
|
||||||
@ -237,9 +241,19 @@ class PickerModule extends ReactContextBaseJavaModule implements ActivityEventLi
|
|||||||
public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
public boolean onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||||
if (requestCode == 1) {
|
if (requestCode == 1) {
|
||||||
|
|
||||||
for (int grantResult : grantResults) {
|
for (int permissionIndex = 0; permissionIndex < permissions.length; permissionIndex++) {
|
||||||
|
String permission = permissions[permissionIndex];
|
||||||
|
int grantResult = grantResults[permissionIndex];
|
||||||
|
|
||||||
if (grantResult == PackageManager.PERMISSION_DENIED) {
|
if (grantResult == PackageManager.PERMISSION_DENIED) {
|
||||||
promise.reject(E_PERMISSIONS_MISSING, "Required permission missing");
|
if (permission.equals(Manifest.permission.CAMERA)) {
|
||||||
|
promise.reject(E_NO_CAMERA_PERMISSION_KEY, E_NO_CAMERA_PERMISSION_MSG);
|
||||||
|
} else if (permission.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||||
|
promise.reject(E_NO_LIBRARY_PERMISSION_KEY, E_NO_LIBRARY_PERMISSION_MSG);
|
||||||
|
} else {
|
||||||
|
// should not happen, we fallback on E_NO_LIBRARY_PERMISSION_KEY rejection for minimal consistency
|
||||||
|
promise.reject(E_NO_LIBRARY_PERMISSION_KEY, "Required permission missing");
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
4
index.d.ts
vendored
4
index.d.ts
vendored
@ -439,12 +439,12 @@ declare module "react-native-image-crop-picker" {
|
|||||||
type PickerErrorCodeCommon =
|
type PickerErrorCodeCommon =
|
||||||
| 'E_PICKER_CANCELLED'
|
| 'E_PICKER_CANCELLED'
|
||||||
| 'E_NO_IMAGE_DATA_FOUND'
|
| 'E_NO_IMAGE_DATA_FOUND'
|
||||||
| 'E_PERMISSION_MISSING'
|
| 'E_NO_LIBRARY_PERMISSION'
|
||||||
|
| 'E_NO_CAMERA_PERMISSION'
|
||||||
| 'E_ERROR_WHILE_CLEANING_FILES';
|
| 'E_ERROR_WHILE_CLEANING_FILES';
|
||||||
|
|
||||||
type PickerErrorCodeIOS =
|
type PickerErrorCodeIOS =
|
||||||
| 'E_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR'
|
| 'E_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR'
|
||||||
| 'E_PICKER_NO_CAMERA_PERMISSION'
|
|
||||||
| 'E_CROPPER_IMAGE_NOT_FOUND'
|
| 'E_CROPPER_IMAGE_NOT_FOUND'
|
||||||
| 'E_CANNOT_SAVE_IMAGE'
|
| 'E_CANNOT_SAVE_IMAGE'
|
||||||
| 'E_CANNOT_PROCESS_VIDEO';
|
| 'E_CANNOT_PROCESS_VIDEO';
|
||||||
|
@ -12,11 +12,11 @@
|
|||||||
#define ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_KEY @"E_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR"
|
#define ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_KEY @"E_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR"
|
||||||
#define ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_MSG @"Cannot run camera on simulator"
|
#define ERROR_PICKER_CANNOT_RUN_CAMERA_ON_SIMULATOR_MSG @"Cannot run camera on simulator"
|
||||||
|
|
||||||
#define ERROR_PICKER_NO_CAMERA_PERMISSION_KEY @"E_PICKER_NO_CAMERA_PERMISSION"
|
#define ERROR_NO_CAMERA_PERMISSION_KEY @"E_NO_CAMERA_PERMISSION"
|
||||||
#define ERROR_PICKER_NO_CAMERA_PERMISSION_MSG @"User did not grant camera permission."
|
#define ERROR_NO_CAMERA_PERMISSION_MSG @"User did not grant camera permission."
|
||||||
|
|
||||||
#define ERROR_PICKER_UNAUTHORIZED_KEY @"E_PERMISSION_MISSING"
|
#define ERROR_NO_LIBRARY_PERMISSION_KEY @"E_NO_LIBRARY_PERMISSION"
|
||||||
#define ERROR_PICKER_UNAUTHORIZED_MSG @"Cannot access images. Please allow access if you want to be able to select images."
|
#define ERROR_NO_LIBRARY_PERMISSION_MSG @"User did not grant library permission."
|
||||||
|
|
||||||
#define ERROR_PICKER_CANCEL_KEY @"E_PICKER_CANCELLED"
|
#define ERROR_PICKER_CANCEL_KEY @"E_PICKER_CANCELLED"
|
||||||
#define ERROR_PICKER_CANCEL_MSG @"User cancelled image selection"
|
#define ERROR_PICKER_CANCEL_MSG @"User cancelled image selection"
|
||||||
@ -145,7 +145,7 @@ RCT_EXPORT_METHOD(openCamera:(NSDictionary *)options
|
|||||||
#else
|
#else
|
||||||
[self checkCameraPermissions:^(BOOL granted) {
|
[self checkCameraPermissions:^(BOOL granted) {
|
||||||
if (!granted) {
|
if (!granted) {
|
||||||
self.reject(ERROR_PICKER_NO_CAMERA_PERMISSION_KEY, ERROR_PICKER_NO_CAMERA_PERMISSION_MSG, nil);
|
self.reject(ERROR_NO_CAMERA_PERMISSION_KEY, ERROR_NO_CAMERA_PERMISSION_MSG, nil);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,7 +285,7 @@ RCT_EXPORT_METHOD(openPicker:(NSDictionary *)options
|
|||||||
|
|
||||||
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
|
[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
|
||||||
if (status != PHAuthorizationStatusAuthorized) {
|
if (status != PHAuthorizationStatusAuthorized) {
|
||||||
self.reject(ERROR_PICKER_UNAUTHORIZED_KEY, ERROR_PICKER_UNAUTHORIZED_MSG, nil);
|
self.reject(ERROR_NO_LIBRARY_PERMISSION_KEY, ERROR_NO_LIBRARY_PERMISSION_MSG, nil);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user