[Session] Drill `getAgent` into notifications handlers (#3705)

* Drill into notifications handlers

(cherry picked from commit 7ac9e500866732e1f2e205bbe96e70db331e5ffb)

* Thread getAgent instead

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
zio/stable
Eric Bailey 2024-04-25 15:57:45 -05:00 committed by GitHub
parent e5fdbfe294
commit d8c8e1e854
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 10 additions and 4 deletions

View File

@ -1,12 +1,13 @@
import {useEffect} from 'react' import {useEffect} from 'react'
import * as Notifications from 'expo-notifications' import * as Notifications from 'expo-notifications'
import {BskyAgent} from '@atproto/api'
import {QueryClient} from '@tanstack/react-query' import {QueryClient} from '@tanstack/react-query'
import {logger} from '#/logger' import {logger} from '#/logger'
import {RQKEY as RQKEY_NOTIFS} from '#/state/queries/notifications/feed' import {RQKEY as RQKEY_NOTIFS} from '#/state/queries/notifications/feed'
import {invalidateCachedUnreadPage} from '#/state/queries/notifications/unread' import {invalidateCachedUnreadPage} from '#/state/queries/notifications/unread'
import {truncateAndInvalidate} from '#/state/queries/util' import {truncateAndInvalidate} from '#/state/queries/util'
import {getAgent, SessionAccount} from '#/state/session' import {SessionAccount} from '#/state/session'
import {track} from 'lib/analytics/analytics' import {track} from 'lib/analytics/analytics'
import {devicePlatform, isIOS} from 'platform/detection' import {devicePlatform, isIOS} from 'platform/detection'
import {resetToTab} from '../../Navigation' import {resetToTab} from '../../Navigation'
@ -18,6 +19,7 @@ const SERVICE_DID = (serviceUrl?: string) =>
: 'did:web:api.bsky.app' : 'did:web:api.bsky.app'
export async function requestPermissionsAndRegisterToken( export async function requestPermissionsAndRegisterToken(
getAgent: () => BskyAgent,
account: SessionAccount, account: SessionAccount,
) { ) {
// request notifications permission once the user has logged in // request notifications permission once the user has logged in
@ -49,6 +51,7 @@ export async function requestPermissionsAndRegisterToken(
} }
export function registerTokenChangeHandler( export function registerTokenChangeHandler(
getAgent: () => BskyAgent,
account: SessionAccount, account: SessionAccount,
): () => void { ): () => void {
// listens for new changes to the push token // listens for new changes to the push token

View File

@ -13,7 +13,7 @@ import * as NavigationBar from 'expo-navigation-bar'
import {StatusBar} from 'expo-status-bar' import {StatusBar} from 'expo-status-bar'
import {useNavigationState} from '@react-navigation/native' import {useNavigationState} from '@react-navigation/native'
import {useSession} from '#/state/session' import {getAgent, useSession} from '#/state/session'
import { import {
useIsDrawerOpen, useIsDrawerOpen,
useIsDrawerSwipeDisabled, useIsDrawerSwipeDisabled,
@ -78,8 +78,11 @@ function ShellInner() {
// only runs when did changes // only runs when did changes
if (currentAccount && currentAccountDid.current !== currentAccount.did) { if (currentAccount && currentAccountDid.current !== currentAccount.did) {
currentAccountDid.current = currentAccount.did currentAccountDid.current = currentAccount.did
notifications.requestPermissionsAndRegisterToken(currentAccount) notifications.requestPermissionsAndRegisterToken(getAgent, currentAccount)
const unsub = notifications.registerTokenChangeHandler(currentAccount) const unsub = notifications.registerTokenChangeHandler(
getAgent,
currentAccount,
)
return unsub return unsub
} }
}, [currentAccount]) }, [currentAccount])