Skip to content

Commit 79b702e

Browse files
committed
fix dependencies in useNotifications.ts
1 parent d0f9e21 commit 79b702e

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/notifications/domain/hooks/useNotifications.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useCallback, useEffect, useState } from 'react'
1+
import { useCallback, useEffect, useRef, useState } from 'react'
22
import { useSession } from '@/sections/session/SessionContext'
33
import { Notification } from '@/notifications/domain/models/Notification'
44
import { NotificationRepository } from '@/notifications/domain/repositories/NotificationRepository'
@@ -17,18 +17,23 @@ export function useNotifications(
1717
const [error, setError] = useState<string | null>(null)
1818
const { user } = useSession()
1919

20+
const { page, pageSize } = paginationInfo
21+
22+
const setPaginationInfoRef = useRef(setPaginationInfo)
23+
useEffect(() => {
24+
setPaginationInfoRef.current = setPaginationInfo
25+
}, [setPaginationInfo])
26+
2027
const fetchNotifications = useCallback(
2128
async (silent = false) => {
2229
if (!silent) setIsLoading(true)
2330
try {
24-
const fetched = await getAllNotificationsByUser(repository, paginationInfo)
31+
const currentPagination = new NotificationsPaginationInfo(page, pageSize)
32+
const fetched = await getAllNotificationsByUser(repository, currentPagination)
2533
setError(null)
26-
setPaginationInfo(
27-
new NotificationsPaginationInfo(
28-
paginationInfo.page,
29-
paginationInfo.pageSize,
30-
fetched.totalItemCount
31-
)
34+
35+
setPaginationInfoRef.current(
36+
new NotificationsPaginationInfo(page, pageSize, fetched.totalItemCount)
3237
)
3338
setNotifications(fetched.items)
3439
} catch (err) {
@@ -38,7 +43,7 @@ export function useNotifications(
3843
if (!silent) setIsLoading(false)
3944
}
4045
},
41-
[repository, paginationInfo.page, paginationInfo.pageSize]
46+
[repository, page, pageSize]
4247
)
4348

4449
useEffect(() => {
@@ -51,7 +56,7 @@ export function useNotifications(
5156
}, POLLING_NOTIFICATIONS_INTERVAL_TIME)
5257

5358
return () => clearInterval(interval)
54-
}, [fetchNotifications, user, paginationInfo.page, paginationInfo.pageSize])
59+
}, [fetchNotifications, user])
5560

5661
const markAsRead = async (ids: number[]) => {
5762
setNotifications((prev) =>

0 commit comments

Comments
 (0)