Drill into notifications handlers

(cherry picked from commit 7ac9e500866732e1f2e205bbe96e70db331e5ffb)
This commit is contained in:
Eric Bailey
2024-04-25 11:33:24 -05:00
parent 717304eb14
commit 679f613831
2 changed files with 15 additions and 6 deletions
+6 -3
View File
@@ -1,12 +1,13 @@
import {useEffect} from 'react'
import * as Notifications from 'expo-notifications'
import {BskyAgent} from '@atproto/api'
import {QueryClient} from '@tanstack/react-query'
import {logger} from '#/logger'
import {RQKEY as RQKEY_NOTIFS} from '#/state/queries/notifications/feed'
import {invalidateCachedUnreadPage} from '#/state/queries/notifications/unread'
import {truncateAndInvalidate} from '#/state/queries/util'
import {getAgent, SessionAccount} from '#/state/session'
import {SessionAccount} from '#/state/session'
import {track} from 'lib/analytics/analytics'
import {devicePlatform, isIOS} from 'platform/detection'
import {resetToTab} from '../../Navigation'
@@ -18,6 +19,7 @@ const SERVICE_DID = (serviceUrl?: string) =>
: 'did:web:api.bsky.app'
export async function requestPermissionsAndRegisterToken(
agent: BskyAgent,
account: SessionAccount,
) {
// request notifications permission once the user has logged in
@@ -29,7 +31,7 @@ export async function requestPermissionsAndRegisterToken(
// register the push token with the server
const token = await Notifications.getDevicePushTokenAsync()
try {
await getAgent().api.app.bsky.notification.registerPush({
await agent.api.app.bsky.notification.registerPush({
serviceDid: SERVICE_DID(account.service),
platform: devicePlatform,
token: token.data,
@@ -49,6 +51,7 @@ export async function requestPermissionsAndRegisterToken(
}
export function registerTokenChangeHandler(
agent: BskyAgent,
account: SessionAccount,
): () => void {
// listens for new changes to the push token
@@ -60,7 +63,7 @@ export function registerTokenChangeHandler(
logger.DebugContext.notifications,
)
try {
await getAgent().api.app.bsky.notification.registerPush({
await agent.api.app.bsky.notification.registerPush({
serviceDid: SERVICE_DID(account.service),
platform: devicePlatform,
token: newToken.data,
+9 -3
View File
@@ -13,7 +13,7 @@ import * as NavigationBar from 'expo-navigation-bar'
import {StatusBar} from 'expo-status-bar'
import {useNavigationState} from '@react-navigation/native'
import {useSession} from '#/state/session'
import {getAgent, useSession} from '#/state/session'
import {
useIsDrawerOpen,
useIsDrawerSwipeDisabled,
@@ -78,8 +78,14 @@ function ShellInner() {
// only runs when did changes
if (currentAccount && currentAccountDid.current !== currentAccount.did) {
currentAccountDid.current = currentAccount.did
notifications.requestPermissionsAndRegisterToken(currentAccount)
const unsub = notifications.registerTokenChangeHandler(currentAccount)
notifications.requestPermissionsAndRegisterToken(
getAgent(),
currentAccount,
)
const unsub = notifications.registerTokenChangeHandler(
getAgent(),
currentAccount,
)
return unsub
}
}, [currentAccount])