handle decrement in useMarkAsRead
This commit is contained in:
@@ -6,7 +6,6 @@ import {useQueryClient} from '@tanstack/react-query'
|
|||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {track} from 'lib/analytics/analytics'
|
import {track} from 'lib/analytics/analytics'
|
||||||
import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher'
|
import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher'
|
||||||
import {decrementBadgeCount} from 'lib/notifications/notifications'
|
|
||||||
import {NavigationProp} from 'lib/routes/types'
|
import {NavigationProp} from 'lib/routes/types'
|
||||||
import {logEvent} from 'lib/statsig/statsig'
|
import {logEvent} from 'lib/statsig/statsig'
|
||||||
import {isAndroid} from 'platform/detection'
|
import {isAndroid} from 'platform/detection'
|
||||||
@@ -89,7 +88,6 @@ export function useNotificationsHandler() {
|
|||||||
if (!payload) return
|
if (!payload) return
|
||||||
|
|
||||||
if (payload.reason === 'chat-message') {
|
if (payload.reason === 'chat-message') {
|
||||||
decrementBadgeCount(1)
|
|
||||||
if (payload.recipientDid !== currentAccount?.did && !storedPayload) {
|
if (payload.recipientDid !== currentAccount?.did && !storedPayload) {
|
||||||
storedPayload = payload
|
storedPayload = payload
|
||||||
closeAllActiveElements()
|
closeAllActiveElements()
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import {isNative} from '#/platform/detection'
|
|||||||
import {useProfileShadow} from '#/state/cache/profile-shadow'
|
import {useProfileShadow} from '#/state/cache/profile-shadow'
|
||||||
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
||||||
import {useSession} from '#/state/session'
|
import {useSession} from '#/state/session'
|
||||||
import {decrementBadgeCount} from 'lib/notifications/notifications'
|
|
||||||
import {sanitizeDisplayName} from 'lib/strings/display-names'
|
import {sanitizeDisplayName} from 'lib/strings/display-names'
|
||||||
import {TimeElapsed} from '#/view/com/util/TimeElapsed'
|
import {TimeElapsed} from '#/view/com/util/TimeElapsed'
|
||||||
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
import {UserAvatar} from '#/view/com/util/UserAvatar'
|
||||||
@@ -105,15 +104,10 @@ function ChatListItemReady({
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const onPress = useCallback(async () => {
|
const onPress = useCallback(async () => {
|
||||||
if (convo.unreadCount > 0) {
|
|
||||||
// We only increment the badge once per conversation, so even if there are multiple unreads
|
|
||||||
// we only want to decrement by one.
|
|
||||||
decrementBadgeCount(1)
|
|
||||||
}
|
|
||||||
navigation.push('MessagesConversation', {
|
navigation.push('MessagesConversation', {
|
||||||
conversation: convo.id,
|
conversation: convo.id,
|
||||||
})
|
})
|
||||||
}, [convo.id, convo.unreadCount, navigation])
|
}, [convo.id, navigation])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
import {useCurrentConvoId} from '#/state/messages/current-convo-id'
|
import {useCurrentConvoId} from '#/state/messages/current-convo-id'
|
||||||
import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
|
import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
|
||||||
import {useAgent} from '#/state/session'
|
import {useAgent} from '#/state/session'
|
||||||
|
import {decrementBadgeCount} from 'lib/notifications/notifications'
|
||||||
|
|
||||||
export const RQKEY = ['convo-list']
|
export const RQKEY = ['convo-list']
|
||||||
type RQPageParam = string | undefined
|
type RQPageParam = string | undefined
|
||||||
@@ -116,10 +117,18 @@ export function useOnMarkAsRead() {
|
|||||||
return useCallback(
|
return useCallback(
|
||||||
(chatId: string) => {
|
(chatId: string) => {
|
||||||
queryClient.setQueryData(RQKEY, (old: ConvoListQueryData) => {
|
queryClient.setQueryData(RQKEY, (old: ConvoListQueryData) => {
|
||||||
return optimisticUpdate(chatId, old, convo => ({
|
return optimisticUpdate(chatId, old, convo => {
|
||||||
...convo,
|
// We only want to decrement the badge by one no matter the unread count, since we only increment once per
|
||||||
unreadCount: 0,
|
// sender regardless of message count
|
||||||
}))
|
if (convo.unreadCount > 0) {
|
||||||
|
decrementBadgeCount(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
...convo,
|
||||||
|
unreadCount: 0,
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
[queryClient],
|
[queryClient],
|
||||||
|
|||||||
Reference in New Issue
Block a user