diff options
author | Hailey <me@haileyok.com> | 2024-06-11 10:28:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-11 10:28:48 -0700 |
commit | fac5f6cdacadf552e51743b145a5d4de40eb15be (patch) | |
tree | d6975abe68c8b1ee7d8a01102af3984164e7ff19 /src/lib | |
parent | 808dd3569d1f004903d2bf54f29de2db74bbefd1 (diff) | |
download | voidsky-fac5f6cdacadf552e51743b145a5d4de40eb15be.tar.zst |
register the push token after request has been approved on android (#4481)
* register the push token after request has been approved on android * use a `0` string for badge count * Revert "use a `0` string for badge count" This reverts commit efac39861817f4237c58211f68ef266d919b4d40. * temporary fix
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/notifications/notifications.ts | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/notifications/notifications.ts b/src/lib/notifications/notifications.ts index fba1fe32f..fafc66143 100644 --- a/src/lib/notifications/notifications.ts +++ b/src/lib/notifications/notifications.ts @@ -88,6 +88,7 @@ export function useNotificationsRegistration() { export function useRequestNotificationsPermission() { const gate = useGate() const {currentAccount} = useSession() + const agent = useAgent() return async ( context: 'StartOnboarding' | 'AfterOnboarding' | 'Login' | 'Home', @@ -125,7 +126,20 @@ export function useRequestNotificationsPermission() { if (res.granted) { // This will fire a pushTokenEvent, which will handle registration of the token - getPushToken(true) + const token = await getPushToken(true) + + // Same hack as above. We cannot rely on the `addPushTokenListener` to fire on Android due to an Expo bug, so we + // will manually register it here. Note that this will occur only: + // 1. right after the user signs in, leading to no `currentAccount` account being available - this will be instead + // picked up from the useEffect above on `currentAccount` change + // 2. right after onboarding. In this case, we _need_ this registration, since `currentAccount` will not change + // and we need to ensure the token is registered right after permission is granted. `currentAccount` will already + // be available in this case, so the registration will succeed. + // We should remove this once expo-notifications (and possibly FCMv1) is fixed and the `addPushTokenListener` is + // working again. See https://github.com/expo/expo/issues/28656 + if (isAndroid && currentAccount && token) { + registerPushToken(agent, currentAccount, token) + } } } } |