Check, request and handle notification permissions #2757
+1,277
−335
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
(Based on #2687 and #2752, the latter is required, otherwise the check, if notifications are needed, does not work reliably [correct ln address
enabled
flag is needed].)This lets Zeus properly check, request and handle notification permissions.
Tested with Android 12 and Android 14 (notification permission logic changed as of Android 13). Untested for iOS.
Zeus now handles notification permissions across different Android versions (and iOS hopefully also works 👽). When notifications are needed, it will either request permission directly (not possible on Android 12 and lower) or guide users to system settings with an infoModal. This happens when:
notifications=push
is default)notifications=push
notifications=push
Also:
notifications=push
is only possible if user grants notification permissionnotifications=disabled
Additionally fixed a "Possible unhandled promise rejection" warning by adding an empty catch in
LightningAddress\index.tsx
.Note 1:
We should use react-native-permissions everywhere, then we can finally fix this: #1054. But I didn't want to put that in this same PR.
Note 2:
Added AsyncStorage and react-native-permissions mocks to handleAnything.test.ts and MigrationUtils.test.ts because these modules are required through the dependency chain (MigrationUtils imports LightningAddressStore which imports NotificationUtils).
This pull request is categorized as a:
Checklist
yarn run tsc
and made sure my code compiles correctlyyarn run lint
and made sure my code didn’t contain any problematic patternsyarn run prettier
and made sure my code is formatted correctlyyarn run test
and made sure all of the tests passTesting
If you modified or added a utility file, did you add new unit tests?
I have tested this PR on the following platforms (please specify OS version and phone model/VM):
I have tested this PR with the following types of nodes (please specify node version and API version where appropriate):
Locales
Third Party Dependencies and Packages
yarn
after this PR is merged inpackage.json
andyarn.lock
have been properly updatedOther: