diff --git a/packages/pl-fe/src/queries/notifications/use-notifications.ts b/packages/pl-fe/src/queries/notifications/use-notifications.ts index a71b4d33b..5f6ec45b8 100644 --- a/packages/pl-fe/src/queries/notifications/use-notifications.ts +++ b/packages/pl-fe/src/queries/notifications/use-notifications.ts @@ -34,6 +34,7 @@ import { minifyGroupedNotifications } from '../utils/minify-list'; import type { GetGroupedNotificationsParams, + Marker, Notification, NotificationGroup, PaginatedResponse, @@ -243,6 +244,11 @@ const useMarkNotificationsReadMutation = () => { mutationFn: async (lastReadId?: string | null) => { if (!lastReadId) return; + const currentMarker = queryClient.getQueryData(['markers', 'notifications']); + if (currentMarker && compareId(currentMarker.last_read_id, lastReadId) >= 0) { + return; + } + return await client.timelines.saveMarkers({ notifications: { last_read_id: lastReadId, @@ -252,18 +258,7 @@ const useMarkNotificationsReadMutation = () => { onSuccess: (markers, lastReadId) => { if (markers?.notifications) { queryClient.setQueryData(['markers', 'notifications'], markers.notifications); - return; } - - if (!lastReadId) return; - - queryClient.setQueryData(['markers', 'notifications'], (marker) => { - if (!marker) return undefined; - return { - ...marker, - last_read_id: lastReadId, - }; - }); }, }); };