Skip to content

Commit 9f9cfae

Browse files
committed
fix: rely on processedMessageList for calculations
1 parent 0e05faa commit 9f9cfae

File tree

2 files changed

+21
-27
lines changed

2 files changed

+21
-27
lines changed

package/src/components/MessageList/hooks/useMessageList.ts

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,32 @@ export const useMessageList = (params: UseMessageListParams) => {
7474
() => new MessagePreviousAndNextMessageStore(),
7575
);
7676

77-
const filteredMessageList = useMemo(() => {
78-
const filteredMessages = [];
77+
const processedMessageList = useMemo<LocalMessage[]>(() => {
78+
const newMessageList = [];
7979
for (const message of messageList) {
8080
if (
81-
shouldIncludeMessageInList(message, {
81+
!shouldIncludeMessageInList(message, {
8282
deletedMessagesVisibilityType,
8383
userId: client.userID,
8484
})
8585
) {
86-
filteredMessages.push(message);
86+
continue;
87+
}
88+
if (isFlashList) {
89+
newMessageList.push(message);
90+
} else {
91+
newMessageList.unshift(message);
8792
}
8893
}
89-
return filteredMessages;
90-
}, [messageList, deletedMessagesVisibilityType, client.userID]);
94+
return newMessageList;
95+
}, [messageList, deletedMessagesVisibilityType, client.userID, isFlashList]);
9196

9297
useEffect(() => {
9398
messageListPreviousAndNextMessageStore.setMessageListPreviousAndNextMessage(
94-
filteredMessageList,
99+
processedMessageList,
100+
isFlashList,
95101
);
96-
}, [filteredMessageList, messageListPreviousAndNextMessageStore]);
102+
}, [processedMessageList, messageListPreviousAndNextMessageStore, isFlashList]);
97103

98104
/**
99105
* @deprecated use `useDateSeparator` hook instead directly in the Message.
@@ -102,9 +108,9 @@ export const useMessageList = (params: UseMessageListParams) => {
102108
() =>
103109
getDateSeparators({
104110
hideDateSeparators,
105-
messages: filteredMessageList,
111+
messages: processedMessageList,
106112
}),
107-
[hideDateSeparators, filteredMessageList],
113+
[hideDateSeparators, processedMessageList],
108114
);
109115

110116
/**
@@ -122,15 +128,15 @@ export const useMessageList = (params: UseMessageListParams) => {
122128
dateSeparators: dateSeparatorsRef.current,
123129
hideDateSeparators,
124130
maxTimeBetweenGroupedMessages,
125-
messages: filteredMessageList,
131+
messages: processedMessageList,
126132
noGroupByUser,
127133
userId: client.userID,
128134
}),
129135
[
130136
getMessagesGroupStyles,
131137
hideDateSeparators,
132138
maxTimeBetweenGroupedMessages,
133-
filteredMessageList,
139+
processedMessageList,
134140
noGroupByUser,
135141
client.userID,
136142
],
@@ -142,18 +148,6 @@ export const useMessageList = (params: UseMessageListParams) => {
142148
const messageGroupStylesRef = useRef<MessageGroupStyles>(messageGroupStyles);
143149
messageGroupStylesRef.current = messageGroupStyles;
144150

145-
const processedMessageList = useMemo<LocalMessage[]>(() => {
146-
const newMessageList = [];
147-
for (const message of filteredMessageList) {
148-
if (isFlashList) {
149-
newMessageList.push(message);
150-
} else {
151-
newMessageList.unshift(message);
152-
}
153-
}
154-
return newMessageList;
155-
}, [filteredMessageList, isFlashList]);
156-
157151
const data = useRAFCoalescedValue(processedMessageList, isLiveStreaming);
158152

159153
return useMemo(

package/src/state-store/message-list-prev-next-state.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ export class MessagePreviousAndNextMessageStore {
2121
this.state = new StateStore<MessagePreviousAndNextMessageStoreType>(INITIAL_STATE);
2222
}
2323

24-
public setMessageListPreviousAndNextMessage(messages: LocalMessage[]) {
24+
public setMessageListPreviousAndNextMessage(messages: LocalMessage[], isFlashList?: boolean) {
2525
const currentValue = this.state.getLatestValue();
2626
const prevMessageList: MessagePreviousAndNextMessageStoreType['messageList'] =
2727
currentValue.messageList;
2828
const newMessageList: MessagePreviousAndNextMessageStoreType['messageList'] = {};
2929
for (let i = 0; i < messages.length; i++) {
3030
const message = messages[i];
31-
const previousMessage = messages[i - 1];
32-
const nextMessage = messages[i + 1];
31+
const previousMessage = isFlashList ? messages[i - 1] : messages[i + 1];
32+
const nextMessage = isFlashList ? messages[i + 1] : messages[i - 1];
3333

3434
const existing = prevMessageList[message.id];
3535

0 commit comments

Comments
 (0)