Skip to content

Commit 5248e2b

Browse files
committed
fix: isNewest prop rerender
1 parent bd6b659 commit 5248e2b

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

package/src/components/Message/MessageSimple/MessageWrapper.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react';
1+
import React, { useCallback } from 'react';
22

33
import { View } from 'react-native';
44

@@ -14,6 +14,7 @@ import { ThemeProvider, useTheme } from '../../../contexts/themeContext/ThemeCon
1414

1515
import { useStateStore } from '../../../hooks/useStateStore';
1616
import { ChannelUnreadStateStoreType } from '../../../state-store/channel-unread-state';
17+
import { MessagePreviousAndNextMessageStoreType } from '../../../state-store/message-list-prev-next-state';
1718

1819
const channelUnreadStateSelector = (state: ChannelUnreadStateStoreType) => ({
1920
first_unread_message_id: state.channelUnreadState?.first_unread_message_id,
@@ -23,12 +24,11 @@ const channelUnreadStateSelector = (state: ChannelUnreadStateStoreType) => ({
2324
});
2425

2526
export type MessageWrapperProps = {
26-
isNewestMessage?: boolean;
2727
message: LocalMessage;
2828
};
2929

3030
export const MessageWrapper = (props: MessageWrapperProps) => {
31-
const { isNewestMessage, message } = props;
31+
const { message } = props;
3232
const { client } = useChatContext();
3333
const {
3434
channelUnreadStateStore,
@@ -61,6 +61,14 @@ export const MessageWrapper = (props: MessageWrapperProps) => {
6161
messageListPreviousAndNextMessageStore,
6262
});
6363

64+
const selector = useCallback(
65+
(state: MessagePreviousAndNextMessageStoreType) => ({
66+
nextMessage: state.messageList[message.id]?.nextMessage,
67+
}),
68+
[message.id],
69+
);
70+
const { nextMessage } = useStateStore(messageListPreviousAndNextMessageStore.state, selector);
71+
const isNewestMessage = nextMessage === undefined;
6472
const groupStyles = useMessageGroupStyles({
6573
dateSeparatorDate,
6674
getMessageGroupStyle,

package/src/components/MessageList/MessageFlashList.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,8 @@ const getItemTypeInternal = (message: LocalMessage) => {
255255
return 'generic-message';
256256
};
257257

258-
const renderItem = ({ index, item: message }: { index: number; item: LocalMessage }) => {
259-
const isNewestMessage = index === 0;
260-
return <MessageWrapper isNewestMessage={isNewestMessage} message={message} />;
258+
const renderItem = ({ item: message }: { item: LocalMessage }) => {
259+
return <MessageWrapper message={message} />;
261260
};
262261

263262
const channelUnreadStateSelector = (state: ChannelUnreadStateStoreType) => ({

package/src/components/MessageList/MessageList.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,8 @@ type MessageListPropsWithContext = Pick<
241241
isLiveStreaming?: boolean;
242242
};
243243

244-
const renderItem = ({ index, item: message }: { index: number; item: LocalMessage }) => {
245-
const isNewestMessage = index === 0;
246-
247-
return <MessageWrapper isNewestMessage={isNewestMessage} message={message} />;
244+
const renderItem = ({ item: message }: { item: LocalMessage }) => {
245+
return <MessageWrapper message={message} />;
248246
};
249247

250248
/**

0 commit comments

Comments
 (0)