Skip to content

Commit 70e6c70

Browse files
authored
fix: memoize the read_vevents calculation to make it save a rerender (#3008)
1 parent 2e25f22 commit 70e6c70

File tree

2 files changed

+12
-16
lines changed

2 files changed

+12
-16
lines changed

package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts

+11-13
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useMemo, useState } from 'react';
1+
import { useMemo } from 'react';
22

33
import { TFunction } from 'i18next';
44
import type {
@@ -285,21 +285,19 @@ export const useLatestMessagePreview = <
285285
? stringifyMessage(translatedLastMessage)
286286
: '';
287287

288-
const [readEvents, setReadEvents] = useState(true);
288+
const readEvents = useMemo(() => {
289+
if (!channelConfigExists) {
290+
return true;
291+
}
292+
const read_events = !channel.disconnected && !!channel?.id && channel.getConfig()?.read_events;
293+
if (typeof read_events !== 'boolean') {
294+
return true;
295+
}
296+
return read_events;
297+
}, [channelConfigExists, channel]);
289298

290299
const readStatus = getLatestMessageReadStatus(channel, client, translatedLastMessage, readEvents);
291300

292-
useEffect(() => {
293-
if (channelConfigExists) {
294-
const read_events =
295-
!channel.disconnected && !!channel?.id && channel.getConfig()?.read_events;
296-
if (typeof read_events === 'boolean') {
297-
setReadEvents(read_events);
298-
}
299-
}
300-
// eslint-disable-next-line react-hooks/exhaustive-deps
301-
}, [channelConfigExists]);
302-
303301
const pollId = lastMessage?.poll_id ?? '';
304302
const poll = client.polls.fromState(pollId);
305303
const pollState: LatestMessagePreviewSelectorReturnType =

package/src/hooks/useTranslatedMessage.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ export const useTranslatedMessage = <
1010
>(
1111
message?: MessageResponse<StreamChatGenerics> | FormatMessageResponse<StreamChatGenerics>,
1212
) => {
13-
const { userLanguage: translationContextUserLanguage } = useTranslationContext();
14-
15-
const userLanguage = translationContextUserLanguage;
13+
const { userLanguage } = useTranslationContext();
1614

1715
const translationKey: TranslationKey = `${userLanguage}_text`;
1816

0 commit comments

Comments
 (0)