Skip to content

Commit d19fbc0

Browse files
committed
fix: message reactivity regression and stabilize renderItem
1 parent f57a9d1 commit d19fbc0

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

package/src/components/MessageList/MessageList.tsx

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,9 @@ const MessageListWithContext = <
400400
*/
401401
const messageIdLastScrolledToRef = useRef<string>(undefined);
402402
const [hasMoved, setHasMoved] = useState(false);
403-
const [lastReceivedId, setLastReceivedId] = useState(
404-
getLastReceivedMessage(processedMessageList)?.id,
403+
const lastReceivedId = useMemo(
404+
() => getLastReceivedMessage(processedMessageList)?.id,
405+
[processedMessageList],
405406
);
406407
const [scrollToBottomButtonVisible, setScrollToBottomButtonVisible] = useState(false);
407408

@@ -588,9 +589,6 @@ const MessageListWithContext = <
588589
]);
589590

590591
useEffect(() => {
591-
const lastReceivedMessage = getLastReceivedMessage(processedMessageList);
592-
setLastReceivedId(lastReceivedMessage?.id);
593-
594592
/**
595593
* Scroll down when
596594
* created_at timestamp of top message before update is lesser than created_at timestamp of top message after update - channel has resynced
@@ -698,6 +696,7 @@ const MessageListWithContext = <
698696
if (!flatListRef.current) {
699697
return;
700698
}
699+
console.log('DOING IT HERE');
701700
clearTimeout(failScrollTimeoutId.current);
702701
scrollToIndexFailedRetryCountRef.current = 0;
703702
// keep track of this messageId, so that we dont scroll to again in useEffect for targeted message change
@@ -757,7 +756,7 @@ const MessageListWithContext = <
757756
// TODO: do not apply on RN 0.73 and above
758757
const shouldApplyAndroidWorkaround = inverted && Platform.OS === 'android';
759758

760-
const renderItem = useStableCallback(
759+
const renderItem = useCallback(
761760
({ index, item: message }: { index: number; item: MessageType<StreamChatGenerics> }) => {
762761
if (!channel || channel.disconnected || (!channel.initialized && !channel.offlineMode)) {
763762
return null;
@@ -826,6 +825,29 @@ const MessageListWithContext = <
826825
</View>
827826
);
828827
},
828+
[
829+
InlineDateSeparator,
830+
InlineUnreadIndicator,
831+
Message,
832+
MessageSystem,
833+
channel,
834+
channelUnreadState?.first_unread_message_id,
835+
channelUnreadState?.last_read,
836+
channelUnreadState?.last_read_message_id,
837+
channelUnreadState?.unread_messages,
838+
client.userID,
839+
goToMessage,
840+
highlightedMessageId,
841+
lastReceivedId,
842+
messageContainer,
843+
modifiedTheme,
844+
myMessageTheme,
845+
onThreadSelect,
846+
screenPadding,
847+
shouldApplyAndroidWorkaround,
848+
shouldShowUnreadUnderlay,
849+
threadList,
850+
],
829851
);
830852

831853
useEffect(() => {

0 commit comments

Comments
 (0)