1- import { useCallback , useEffect , useState } from 'react'
1+ import { useCallback , useEffect , useRef , useState } from 'react'
22import { useSession } from '@/sections/session/SessionContext'
33import { Notification } from '@/notifications/domain/models/Notification'
44import { 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