@@ -13,9 +13,9 @@ export const useLastDeliveredData = (
1313) : Record < string , UserResponse [ ] > => {
1414 const { channel, lastOwnMessage, messages, returnAllReadData } = props ;
1515
16- const calculate = useCallback ( ( ) => {
17- if ( returnAllReadData ) {
18- return messages . reduce (
16+ const calculateForAll = useCallback (
17+ ( ) =>
18+ messages . reduce (
1919 ( acc , msg ) => {
2020 acc [ msg . id ] = channel . messageReceiptsTracker . deliveredForMessage ( {
2121 msgId : msg . id ,
@@ -24,24 +24,37 @@ export const useLastDeliveredData = (
2424 return acc ;
2525 } ,
2626 { } as Record < string , UserResponse [ ] > ,
27- ) ;
28- }
27+ ) ,
28+ [ channel , messages ] ,
29+ ) ;
30+
31+ const calculateForLastOwn = useCallback ( ( ) => {
2932 if ( ! lastOwnMessage ) return { } ;
3033 return {
3134 [ lastOwnMessage . id ] : channel . messageReceiptsTracker . deliveredForMessage ( {
3235 msgId : lastOwnMessage . id ,
3336 timestampMs : lastOwnMessage . created_at . getTime ( ) ,
3437 } ) ,
3538 } ;
36- } , [ channel , lastOwnMessage , messages , returnAllReadData ] ) ;
37-
38- const [ deliveredTo , setDeliveredTo ] =
39- useState < Record < string , UserResponse [ ] > > ( calculate ) ;
39+ } , [ channel , lastOwnMessage ] ) ;
4040
41- useEffect (
42- ( ) => channel . on ( 'message.delivered' , ( ) => setDeliveredTo ( calculate ) ) . unsubscribe ,
43- [ channel , calculate ] ,
41+ const [ deliveredTo , setDeliveredTo ] = useState < Record < string , UserResponse [ ] > > (
42+ returnAllReadData ? calculateForAll : calculateForLastOwn ,
4443 ) ;
4544
45+ useEffect ( ( ) => {
46+ if ( ! returnAllReadData ) return ;
47+ setDeliveredTo ( calculateForAll ) ;
48+ return channel . on ( 'message.delivered' , ( ) => setDeliveredTo ( calculateForAll ) )
49+ . unsubscribe ;
50+ } , [ channel , calculateForAll , returnAllReadData ] ) ;
51+
52+ useEffect ( ( ) => {
53+ if ( returnAllReadData ) return ;
54+ else setDeliveredTo ( calculateForLastOwn ) ;
55+ return channel . on ( 'message.delivered' , ( ) => setDeliveredTo ( calculateForLastOwn ) )
56+ . unsubscribe ;
57+ } , [ channel , calculateForLastOwn , returnAllReadData ] ) ;
58+
4659 return deliveredTo ;
4760} ;
0 commit comments