Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check, request and handle notification permissions #2757

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

myxmaster
Copy link
Contributor

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:

  • user enables persistent mode
  • user creates a lightning address for the first time (because notifications=push is default)
  • user creates a lightning address not for the first time (other node has ln address) while notifications=push
  • Wallet.tsx loads while persistent mode is enabled OR current node pubkey has ln address + notifications=push

Also:

  • enabling persistent mode is only possible if user grants notification permission
  • changing lightning address settings to notifications=push is only possible if user grants notification permission
  • creating a lightning address will still be possible if user denies notification permission, but it will then set notifications=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:

  • New feature
  • Bug fix
  • Code refactor
  • Configuration change
  • Locales update
  • Quality assurance
  • Other

Checklist

  • I’ve run yarn run tsc and made sure my code compiles correctly
  • I’ve run yarn run lint and made sure my code didn’t contain any problematic patterns
  • I’ve run yarn run prettier and made sure my code is formatted correctly
  • I’ve run yarn run test and made sure all of the tests pass

Testing

If you modified or added a utility file, did you add new unit tests?

  • No, I’m a fool
  • Yes
  • N/A

I have tested this PR on the following platforms (please specify OS version and phone model/VM):

  • Android
  • iOS

I have tested this PR with the following types of nodes (please specify node version and API version where appropriate):

  • Embedded LND
  • LND (REST)
  • LND (Lightning Node Connect)
  • Core Lightning (CLNRest)
  • LndHub
  • [DEPRECATED] Core Lightning (c-lightning-REST)
  • [DEPRECATED] Core Lightning (Spark)
  • [DEPRECATED] Eclair

Locales

  • I’ve added new locale text that requires translations
  • I’m aware that new translations should be made on the ZEUS Transfix page and not directly to this repo

Third Party Dependencies and Packages

  • Contributors will need to run yarn after this PR is merged in
  • 3rd party dependencies have been modified:
    • verify that package.json and yarn.lock have been properly updated
    • verify that dependencies are installed for both iOS and Android platforms

Other:

  • Changes were made that require an update to the README
  • Changes were made that require an update to onboarding

Sorry, something went wrong.

@myxmaster myxmaster force-pushed the request_permission_android_notifications branch 2 times, most recently from 8d6717a to e2004df Compare January 23, 2025 15:59
@myxmaster myxmaster force-pushed the request_permission_android_notifications branch from e2004df to a4d6d4f Compare January 26, 2025 12:04
@myxmaster
Copy link
Contributor Author

rebased/solved conflicts

@kaloudis kaloudis requested a review from shubhamkmr04 February 5, 2025 13:29
@myxmaster myxmaster marked this pull request as draft February 17, 2025 11:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants