Skip to content

Commit

Permalink
Add a NullPointerException catch
Browse files Browse the repository at this point in the history
  • Loading branch information
zoontek committed Oct 26, 2023
1 parent 2d496bb commit 63b695a
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,17 +139,17 @@ public String getName() {
return null;
}

private boolean permissionExists(final String permission) {
private boolean isPermissionUnavailable(final String permission) {
String fieldName = getFieldName(permission);

if (fieldName == null)
return false;
return true;

try {
Manifest.permission.class.getField(fieldName);
return true;
} catch (NoSuchFieldException ignored) {
return false;
} catch (NoSuchFieldException ignored) {
return true;
}
}

Expand Down Expand Up @@ -187,7 +187,7 @@ public void openSettings(final Promise promise) {

@ReactMethod
public void checkPermission(final String permission, final Promise promise) {
if (permission == null || !permissionExists(permission)) {
if (permission == null || isPermissionUnavailable(permission)) {
promise.resolve(UNAVAILABLE);
return;
}
Expand Down Expand Up @@ -226,7 +226,7 @@ public void shouldShowRequestPermissionRationale(final String permission, final

@ReactMethod
public void requestPermission(final String permission, final Promise promise) {
if (permission == null || !permissionExists(permission)) {
if (permission == null || isPermissionUnavailable(permission)) {
promise.resolve(UNAVAILABLE);
return;
}
Expand Down Expand Up @@ -285,7 +285,7 @@ public void checkMultiplePermissions(final ReadableArray permissions, final Prom
for (int i = 0; i < permissions.size(); i++) {
String permission = permissions.getString(i);

if (!permissionExists(permission)) {
if (isPermissionUnavailable(permission)) {
output.putString(permission, UNAVAILABLE);
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
output.putString(
Expand Down Expand Up @@ -314,7 +314,7 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr
for (int i = 0; i < permissions.size(); i++) {
String permission = permissions.getString(i);

if (!permissionExists(permission)) {
if (isPermissionUnavailable(permission)) {
output.putString(permission, UNAVAILABLE);
checkedPermissionsCount++;
} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
Expand Down Expand Up @@ -422,6 +422,12 @@ public boolean onRequestPermissionsResult(int requestCode, String[] permissions,
e,
"Unexpected invocation of `onRequestPermissionsResult` with invalid current activity");
return false;
} catch (NullPointerException e) {
FLog.e(
"PermissionsModule",
e,
"Unexpected invocation of `onRequestPermissionsResult` with invalid request code");
return false;
}
}

Expand Down
4 changes: 2 additions & 2 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ PODS:
- React-jsi (= 0.72.5)
- React-logger (= 0.72.5)
- React-perflogger (= 0.72.5)
- RNPermissions (3.10.0):
- RNPermissions (3.10.1):
- React-Core
- RNVectorIcons (10.0.0):
- React-Core
Expand Down Expand Up @@ -720,7 +720,7 @@ SPEC CHECKSUMS:
React-runtimescheduler: cc32add98c45c5df18436a6a52a7e1f6edec102c
React-utils: 7a9918a1ffdd39aba67835d42386f592ea3f8e76
ReactCommon: 91ece8350ebb3dd2be9cef662abd78b6948233c0
RNPermissions: 841114b546bd9d07254d76b8ed9c1a365fe95195
RNPermissions: c355116790124654beb71c2e713f38d04ff21a48
RNVectorIcons: 8b5bb0fa61d54cd2020af4f24a51841ce365c7e9
SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17
Yoga: 86fed2e4d425ee4c6eab3813ba1791101ee153c6
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-permissions",
"version": "3.10.0",
"version": "3.10.1",
"license": "MIT",
"description": "An unified permissions API for React Native on iOS, Android and Windows",
"author": "Mathieu Acthernoene <[email protected]>",
Expand Down

0 comments on commit 63b695a

Please sign in to comment.