Skip to content

Commit c5e5145

Browse files
committed
fix: add useMessageReadData optimization
1 parent c793213 commit c5e5145

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

package/src/components/Message/hooks/useMessageReadData.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import { useCallback, useEffect, useState } from 'react';
33
import { LocalMessage } from 'stream-chat';
44

55
import { useChannelContext } from '../../../contexts/channelContext/ChannelContext';
6+
import { useChatContext } from '../../../contexts/chatContext/ChatContext';
67

78
export const useMessageReadData = ({ message }: { message: LocalMessage }) => {
89
const { channel } = useChannelContext();
10+
const { client } = useChatContext();
911
const calculate = useCallback(() => {
1012
if (!message.created_at) {
1113
return 0;
@@ -21,9 +23,15 @@ export const useMessageReadData = ({ message }: { message: LocalMessage }) => {
2123
const [readBy, setReadBy] = useState<number>(calculate());
2224

2325
useEffect(() => {
24-
const { unsubscribe } = channel.on('message.read', () => setReadBy(calculate()));
26+
const { unsubscribe } = channel.on('message.read', (event) => {
27+
/**
28+
* Optimization to only calculate when the event is from a different user.
29+
* i.e. we don't show read status for received messages.
30+
*/
31+
if (event.user?.id !== client.user?.id) setReadBy(calculate());
32+
});
2533
return unsubscribe;
26-
}, [channel, calculate]);
34+
}, [channel, calculate, client.user?.id]);
2735

2836
return readBy;
2937
};

0 commit comments

Comments
 (0)