1
- import { useEffect , useState } from 'react' ;
1
+ import { useEffect , useMemo , useState } from 'react' ;
2
2
3
3
import { TFunction } from 'i18next' ;
4
4
import type {
@@ -286,19 +286,6 @@ export const useLatestMessagePreview = <
286
286
: '' ;
287
287
288
288
const [ readEvents , setReadEvents ] = useState ( true ) ;
289
- const [ latestMessagePreview , setLatestMessagePreview ] = useState <
290
- LatestMessagePreview < StreamChatGenerics >
291
- > ( {
292
- created_at : '' ,
293
- messageObject : undefined ,
294
- previews : [
295
- {
296
- bold : false ,
297
- text : '' ,
298
- } ,
299
- ] ,
300
- status : MessageReadStatus . NOT_SENT_BY_CURRENT_USER ,
301
- } ) ;
302
289
303
290
const readStatus = getLatestMessageReadStatus ( channel , client , translatedLastMessage , readEvents ) ;
304
291
@@ -319,29 +306,25 @@ export const useLatestMessagePreview = <
319
306
useStateStore ( poll ?. state , selector ) ?? { } ;
320
307
const { createdBy, latestVotesByOption, name } = pollState ;
321
308
322
- useEffect (
323
- ( ) =>
324
- setLatestMessagePreview (
325
- getLatestMessagePreview ( {
326
- channel,
327
- client,
328
- lastMessage : translatedLastMessage ,
329
- pollState,
330
- readEvents,
331
- t,
332
- } ) ,
333
- ) ,
334
- // eslint-disable-next-line react-hooks/exhaustive-deps
335
- [
336
- channelLastMessageString ,
337
- forceUpdate ,
309
+ const latestMessagePreview = useMemo ( ( ) => {
310
+ return getLatestMessagePreview ( {
311
+ channel,
312
+ client,
313
+ lastMessage : translatedLastMessage ,
314
+ pollState,
338
315
readEvents,
339
- readStatus ,
340
- latestVotesByOption ,
341
- createdBy ,
342
- name ,
343
- ] ,
344
- ) ;
316
+ t,
317
+ } ) ;
318
+ // eslint-disable-next-line react-hooks/exhaustive-deps
319
+ } , [
320
+ channelLastMessageString ,
321
+ forceUpdate ,
322
+ readEvents ,
323
+ readStatus ,
324
+ latestVotesByOption ,
325
+ createdBy ,
326
+ name ,
327
+ ] ) ;
345
328
346
329
return latestMessagePreview ;
347
330
} ;
0 commit comments