From ac7b20c874e0fdaeb38f35d10aee064cf07f27bb Mon Sep 17 00:00:00 2001 From: Basil Tarek <77439120+Basil-Code@users.noreply.github.com> Date: Thu, 11 Jan 2024 14:08:40 -0800 Subject: [PATCH 1/2] Fix requestPermission to reject the promise when permission is denied --- .../onesignal/rnonesignalandroid/RNOneSignal.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java index 55658b1c..887d8bd4 100644 --- a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java +++ b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java @@ -431,9 +431,18 @@ public void onNotificationPermissionChange(boolean permission) { public void requestNotificationPermission(final boolean fallbackToSettings, Promise promise) { OneSignal.getNotifications().requestPermission(fallbackToSettings, Continue.with(result -> { if (result.isSuccess()) { - promise.resolve(result.getData()); + if (Boolean.TRUE.equals(result.getData())) { + // `requestPermission` completed successfully and the user has accepted permission + promise.resolve(true); + } + else { + // `requestPermission` completed successfully but the user has rejected permission + promise.reject("PERMISSION_REJECTED"); + } + } else { - promise.reject(result.getThrowable().getMessage()); + // `requestPermission` completed unsuccessfully + promise.reject(result.getThrowable() != null ? result.getThrowable().getMessage() : "PERMISSION_ERR"); } })); } From acc716d171e0b01bf80a23b7bc3c582063ac8579 Mon Sep 17 00:00:00 2001 From: Basil Tarek <77439120+Basil-Code@users.noreply.github.com> Date: Thu, 11 Jan 2024 19:25:23 -0800 Subject: [PATCH 2/2] Fix NullPointerException when attempting to access the data and return boolean instead --- .../onesignal/rnonesignalandroid/RNOneSignal.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java index 887d8bd4..bdd94c66 100644 --- a/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java +++ b/android/src/main/java/com/onesignal/rnonesignalandroid/RNOneSignal.java @@ -431,18 +431,18 @@ public void onNotificationPermissionChange(boolean permission) { public void requestNotificationPermission(final boolean fallbackToSettings, Promise promise) { OneSignal.getNotifications().requestPermission(fallbackToSettings, Continue.with(result -> { if (result.isSuccess()) { - if (Boolean.TRUE.equals(result.getData())) { - // `requestPermission` completed successfully and the user has accepted permission + if (result.getData() != null && result.getData()) { + // `requestPermission` completed successfully and the user has accepted permission. promise.resolve(true); } else { - // `requestPermission` completed successfully but the user has rejected permission - promise.reject("PERMISSION_REJECTED"); + // `requestPermission` completed successfully but the user has rejected permission. + promise.resolve(false); } } else { - // `requestPermission` completed unsuccessfully - promise.reject(result.getThrowable() != null ? result.getThrowable().getMessage() : "PERMISSION_ERR"); + // `requestPermission` completed unsuccessfully. + promise.reject(result.getThrowable() != null ? result.getThrowable().getMessage() : "Permission request failed"); } })); }