Use the proper logic on iOS to increment the badge (#4233)

This commit is contained in:
Hailey 2024-06-07 15:15:33 -07:00 committed by GitHub
parent c58aedf050
commit 480a40862f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 34 additions and 15 deletions

View file

@ -7,6 +7,7 @@ import {logger} from '#/logger'
import {SessionAccount, useAgent, useSession} from '#/state/session'
import {logEvent, useGate} from 'lib/statsig/statsig'
import {devicePlatform, isNative} from 'platform/detection'
import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler'
const SERVICE_DID = (serviceUrl?: string) =>
serviceUrl?.includes('staging')
@ -108,19 +109,20 @@ export function useRequestNotificationsPermission() {
}
}
export async function decrementBadgeCount(by: number | 'reset' = 1) {
export async function decrementBadgeCount(by: number) {
if (!isNative) return
const currCount = await getBadgeCountAsync()
if (by === 'reset') {
await setBadgeCountAsync(0)
return
let count = await getBadgeCountAsync()
count -= by
if (count < 0) {
count = 0
}
let newCount = currCount - by
if (newCount < 0) {
newCount = 0
}
await setBadgeCountAsync(newCount)
await BackgroundNotificationHandler.setBadgeCountAsync(count)
await setBadgeCountAsync(count)
}
export async function resetBadgeCount() {
await BackgroundNotificationHandler.setBadgeCountAsync(0)
await setBadgeCountAsync(0)
}

View file

@ -11,7 +11,7 @@ import BroadcastChannel from '#/lib/broadcast'
import {logger} from '#/logger'
import {useMutedThreads} from '#/state/muted-threads'
import {useAgent, useSession} from '#/state/session'
import {decrementBadgeCount} from 'lib/notifications/notifications'
import {resetBadgeCount} from 'lib/notifications/notifications'
import {useModerationOpts} from '../../preferences/moderation-opts'
import {truncateAndInvalidate} from '../util'
import {RQKEY as RQKEY_NOTIFS} from './feed'
@ -119,7 +119,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
// update & broadcast
setNumUnread('')
broadcast.postMessage({event: ''})
decrementBadgeCount('reset')
resetBadgeCount()
},
async checkUnread({