stop using `addPushTokenListener` (#4467)
* stop using push token listener * cleanup the hack * add a comment * remove test code * Fix patch --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>zio/stable
parent
4e9a65200e
commit
c73ad43a80
|
@ -63,7 +63,7 @@ index f1fed19..80afe9e 100644
|
||||||
|
|
||||||
+ @Nullable
|
+ @Nullable
|
||||||
+ public String getChannelId() {
|
+ public String getChannelId() {
|
||||||
+ return mTitle;
|
+ return mChannelId;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {BskyAgent} from '@atproto/api'
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {SessionAccount, useAgent, useSession} from '#/state/session'
|
import {SessionAccount, useAgent, useSession} from '#/state/session'
|
||||||
import {logEvent, useGate} from 'lib/statsig/statsig'
|
import {logEvent, useGate} from 'lib/statsig/statsig'
|
||||||
import {devicePlatform, isNative} from 'platform/detection'
|
import {devicePlatform, isAndroid, isNative} from 'platform/detection'
|
||||||
import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler'
|
import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler'
|
||||||
|
|
||||||
const SERVICE_DID = (serviceUrl?: string) =>
|
const SERVICE_DID = (serviceUrl?: string) =>
|
||||||
|
@ -43,7 +43,7 @@ async function getPushToken(skipPermissionCheck = false) {
|
||||||
const granted =
|
const granted =
|
||||||
skipPermissionCheck || (await Notifications.getPermissionsAsync()).granted
|
skipPermissionCheck || (await Notifications.getPermissionsAsync()).granted
|
||||||
if (granted) {
|
if (granted) {
|
||||||
Notifications.getDevicePushTokenAsync()
|
return Notifications.getDevicePushTokenAsync()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,22 @@ export function useNotificationsRegistration() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HACK - see https://github.com/bluesky-social/social-app/pull/4467
|
||||||
|
// An apparent regression in expo-notifications causes `addPushTokenListener` to not fire on Android whenever the
|
||||||
|
// token changes by calling `getPushToken()`. This is a workaround to ensure we register the token once it is
|
||||||
|
// generated on Android.
|
||||||
|
if (isAndroid) {
|
||||||
|
;(async () => {
|
||||||
|
const token = await getPushToken()
|
||||||
|
|
||||||
|
// Token will be undefined if we don't have notifications permission
|
||||||
|
if (token) {
|
||||||
|
registerPushToken(agent, currentAccount, token)
|
||||||
|
}
|
||||||
|
})()
|
||||||
|
} else {
|
||||||
getPushToken()
|
getPushToken()
|
||||||
|
}
|
||||||
|
|
||||||
// According to the Expo docs, there is a chance that the token will change while the app is open in some rare
|
// According to the Expo docs, there is a chance that the token will change while the app is open in some rare
|
||||||
// cases. This will fire `registerPushToken` whenever that happens.
|
// cases. This will fire `registerPushToken` whenever that happens.
|
||||||
|
|
Loading…
Reference in New Issue