Skip to content

Commit

Permalink
register the push token after request has been approved on android
Browse files Browse the repository at this point in the history
  • Loading branch information
haileyok committed Jun 11, 2024
1 parent 808dd35 commit 84e83e6
Showing 1 changed file with 15 additions and 1 deletion.
16 changes: 15 additions & 1 deletion src/lib/notifications/notifications.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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)
}
}
}
}
Expand Down

0 comments on commit 84e83e6

Please sign in to comment.