Revert react-virtualized key changes

This commit is contained in:
Fedor Indutny 2025-08-11 09:45:56 -07:00 committed by GitHub
commit c7ea1882ba
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -318,15 +318,14 @@ export function ConversationList({
); );
const renderRow: ListRowRenderer = useCallback( const renderRow: ListRowRenderer = useCallback(
({ key: providedKey, index, style }) => { ({ key, index, style }) => {
const row = getRow(index); const row = getRow(index);
if (!row) { if (!row) {
assertDev(false, `Expected a row at index ${index}`); assertDev(false, `Expected a row at index ${index}`);
return <div key={providedKey} style={style} />; return <div key={key} style={style} />;
} }
let result: ReactNode; let result: ReactNode;
let key: string;
switch (row.type) { switch (row.type) {
case RowType.ArchiveButton: case RowType.ArchiveButton:
result = ( result = (
@ -345,11 +344,9 @@ export function ConversationList({
</span> </span>
</button> </button>
); );
key = 'archive';
break; break;
case RowType.Blank: case RowType.Blank:
result = undefined; result = undefined;
key = `blank:${providedKey}`;
break; break;
case RowType.Contact: { case RowType.Contact: {
const { isClickable = true, hasContextMenu = false } = row; const { isClickable = true, hasContextMenu = false } = row;
@ -371,7 +368,6 @@ export function ConversationList({
onRemove={isClickable ? removeConversation : undefined} onRemove={isClickable ? removeConversation : undefined}
/> />
); );
key = `contact:${row.contact.id}`;
break; break;
} }
case RowType.ContactCheckbox: case RowType.ContactCheckbox:
@ -386,7 +382,6 @@ export function ConversationList({
theme={theme} theme={theme}
/> />
); );
key = `contact-checkbox:${row.contact.id}`;
break; break;
case RowType.ClearFilterButton: case RowType.ClearFilterButton:
result = ( result = (
@ -405,7 +400,6 @@ export function ConversationList({
</Button> </Button>
</div> </div>
); );
key = 'clear-filter';
break; break;
case RowType.PhoneNumberCheckbox: case RowType.PhoneNumberCheckbox:
result = ( result = (
@ -425,7 +419,6 @@ export function ConversationList({
theme={theme} theme={theme}
/> />
); );
key = `phone-number-checkbox:${row.phoneNumber.e164}`;
break; break;
case RowType.UsernameCheckbox: case RowType.UsernameCheckbox:
result = ( result = (
@ -445,7 +438,6 @@ export function ConversationList({
theme={theme} theme={theme}
/> />
); );
key = `username-checkbox:${row.username}`;
break; break;
case RowType.GenericCheckbox: case RowType.GenericCheckbox:
result = ( result = (
@ -461,7 +453,6 @@ export function ConversationList({
clickable clickable
/> />
); );
key = `generic-checkbox:${providedKey}`;
break; break;
case RowType.Conversation: { case RowType.Conversation: {
const itemProps = pick(row.conversation, [ const itemProps = pick(row.conversation, [
@ -495,7 +486,6 @@ export function ConversationList({
'serviceId', 'serviceId',
]); ]);
const { badges, title, unreadCount, lastMessage } = itemProps; const { badges, title, unreadCount, lastMessage } = itemProps;
key = `conversation:${itemProps.id}`;
result = ( result = (
<ConversationListItem <ConversationListItem
{...itemProps} {...itemProps}
@ -524,7 +514,6 @@ export function ConversationList({
onClick={showChooseGroupMembers} onClick={showChooseGroupMembers}
/> />
); );
key = 'create-new-group';
break; break;
case RowType.FindByUsername: case RowType.FindByUsername:
result = ( result = (
@ -534,7 +523,6 @@ export function ConversationList({
onClick={showFindByUsername} onClick={showFindByUsername}
/> />
); );
key = 'find-by-username';
break; break;
case RowType.FindByPhoneNumber: case RowType.FindByPhoneNumber:
result = ( result = (
@ -544,7 +532,6 @@ export function ConversationList({
onClick={showFindByPhoneNumber} onClick={showFindByPhoneNumber}
/> />
); );
key = 'find-by-phonenumber';
break; break;
case RowType.Header: { case RowType.Header: {
const headerText = row.getHeaderText(i18n); const headerText = row.getHeaderText(i18n);
@ -556,20 +543,16 @@ export function ConversationList({
{headerText} {headerText}
</div> </div>
); );
key = `header:${providedKey}`;
break; break;
} }
case RowType.MessageSearchResult: case RowType.MessageSearchResult:
result = <>{renderMessageSearchResult?.(row.messageId)}</>; result = <>{renderMessageSearchResult?.(row.messageId)}</>;
key = `message-search-result:${row.messageId}`;
break; break;
case RowType.SearchResultsLoadingFakeHeader: case RowType.SearchResultsLoadingFakeHeader:
result = <SearchResultsLoadingFakeHeaderComponent />; result = <SearchResultsLoadingFakeHeaderComponent />;
key = `loading-header:${providedKey}`;
break; break;
case RowType.SearchResultsLoadingFakeRow: case RowType.SearchResultsLoadingFakeRow:
result = <SearchResultsLoadingFakeRowComponent />; result = <SearchResultsLoadingFakeRowComponent />;
key = `loading-row:${providedKey}`;
break; break;
case RowType.SelectSingleGroup: case RowType.SelectSingleGroup:
result = ( result = (
@ -579,7 +562,6 @@ export function ConversationList({
onSelectGroup={onSelectConversation} onSelectGroup={onSelectConversation}
/> />
); );
key = 'select-single-group';
break; break;
case RowType.StartNewConversation: case RowType.StartNewConversation:
result = ( result = (
@ -595,7 +577,6 @@ export function ConversationList({
showConversation={showConversation} showConversation={showConversation}
/> />
); );
key = 'start-new-conversation';
break; break;
case RowType.UsernameSearchResult: case RowType.UsernameSearchResult:
result = ( result = (
@ -611,7 +592,6 @@ export function ConversationList({
showConversation={showConversation} showConversation={showConversation}
/> />
); );
key = `username-search-result:${row.username}`;
break; break;
case RowType.EmptyResults: case RowType.EmptyResults:
result = ( result = (
@ -619,7 +599,6 @@ export function ConversationList({
{row.message} {row.message}
</div> </div>
); );
key = 'empty-results';
break; break;
default: default:
throw missingCaseError(row); throw missingCaseError(row);