Remove key caching from Timeline

This commit is contained in:
Fedor Indutny 2021-09-28 11:32:54 -07:00 committed by GitHub
parent 1303fd009e
commit 2f7226e200
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 10 deletions

View file

@ -752,7 +752,6 @@ export class Timeline extends React.PureComponent<PropsType, StateType> {
const typingBubbleRow = this.getTypingBubbleRow(); const typingBubbleRow = this.getTypingBubbleRow();
let rowContents: ReactNode; let rowContents: ReactNode;
let stableKey = key;
if (haveOldest && row === 0) { if (haveOldest && row === 0) {
rowContents = ( rowContents = (
<div data-row={row} style={styleWithWidth} role="row"> <div data-row={row} style={styleWithWidth} role="row">
@ -800,7 +799,6 @@ export class Timeline extends React.PureComponent<PropsType, StateType> {
const previousMessageId: undefined | string = items[itemIndex - 1]; const previousMessageId: undefined | string = items[itemIndex - 1];
const messageId = items[itemIndex]; const messageId = items[itemIndex];
const nextMessageId: undefined | string = items[itemIndex + 1]; const nextMessageId: undefined | string = items[itemIndex + 1];
stableKey = messageId;
const actionProps = getActions(this.props); const actionProps = getActions(this.props);
@ -831,7 +829,7 @@ export class Timeline extends React.PureComponent<PropsType, StateType> {
<CellMeasurer <CellMeasurer
cache={this.cellSizeCache} cache={this.cellSizeCache}
columnIndex={0} columnIndex={0}
key={stableKey} key={key}
parent={parent} parent={parent}
rowIndex={index} rowIndex={index}
width={this.mostRecentWidth} width={this.mostRecentWidth}

View file

@ -2328,13 +2328,6 @@ export function reducer(
? existingConversation.resetCounter + 1 ? existingConversation.resetCounter + 1
: 0; : 0;
const sorted = orderBy(
messages,
['received_at', 'sent_at'],
['ASC', 'ASC']
);
const messageIds = sorted.map(message => message.id);
const lookup = fromPairs(messages.map(message => [message.id, message])); const lookup = fromPairs(messages.map(message => [message.id, message]));
let { newest, oldest } = metrics; let { newest, oldest } = metrics;
@ -2355,6 +2348,13 @@ export function reducer(
} }
} }
const sorted = orderBy(
values(lookup),
['received_at', 'sent_at'],
['ASC', 'ASC']
);
const messageIds = sorted.map(message => message.id);
return { return {
...state, ...state,
selectedMessage: scrollToMessageId, selectedMessage: scrollToMessageId,