Skip to content

Commit cc6ab46

Browse files
committed
fix: optimize the message list prev and next state
1 parent e1f3e4c commit cc6ab46

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,29 @@ export class MessagePreviousAndNextMessageStore {
2323

2424
public setMessageListPreviousAndNextMessage(messages: LocalMessage[]) {
2525
const currentValue = this.state.getLatestValue();
26-
const messageList: MessagePreviousAndNextMessageStoreType['messageList'] =
26+
const prevMessageList: MessagePreviousAndNextMessageStoreType['messageList'] =
2727
currentValue.messageList;
28+
const newMessageList: MessagePreviousAndNextMessageStoreType['messageList'] = {};
2829
for (let i = 0; i < messages.length; i++) {
2930
const message = messages[i];
3031
const previousMessage = messages[i - 1];
3132
const nextMessage = messages[i + 1];
32-
messageList[message.id] = {
33-
nextMessage,
34-
previousMessage,
35-
};
33+
34+
const existing = prevMessageList[message.id];
35+
36+
if (
37+
existing &&
38+
existing.previousMessage === previousMessage &&
39+
existing.nextMessage === nextMessage
40+
) {
41+
newMessageList[message.id] = existing;
42+
} else {
43+
newMessageList[message.id] = {
44+
nextMessage,
45+
previousMessage,
46+
};
47+
}
3648
}
37-
this.state.partialNext({ messageList });
49+
this.state.partialNext({ messageList: newMessageList });
3850
}
3951
}

0 commit comments

Comments
 (0)