From 5d375eb837519e7cb3cd692d1af997318ef7da9b Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Mon, 26 May 2025 19:42:24 +0530 Subject: [PATCH] Move --- web/apps/photos/src/components/Export.tsx | 78 +++++++++-------------- 1 file changed, 31 insertions(+), 47 deletions(-) diff --git a/web/apps/photos/src/components/Export.tsx b/web/apps/photos/src/components/Export.tsx index 0e58c5caf1..160e42ef52 100644 --- a/web/apps/photos/src/components/Export.tsx +++ b/web/apps/photos/src/components/Export.tsx @@ -555,38 +555,17 @@ const ExportPendingListDialog: React.FC = ({ allCollectionsNameByID, pendingFiles, }) => { - const renderListItem = (file: EnteFile) => { - return ( - - - - - - {`${allCollectionsNameByID.get(file.collectionID)} / ${ - file.metadata.title - }`} - - - ); - }; - const getItemTitle = (file: EnteFile) => { return `${allCollectionsNameByID.get(file.collectionID)} / ${ file.metadata.title }`; }; - const itemData = createItemData(renderListItem, getItemTitle, pendingFiles); - - const getItemKey: ListItemKeySelector> = (index, data) => { - const { items } = data; - const file = items[index] as EnteFile; - return `${file.collectionID}-${file.id}`; - }; + const itemData = createItemData( + allCollectionsNameByID, + getItemTitle, + pendingFiles, + ); const itemSize = 50; /* px */ const itemCount = pendingFiles.length; @@ -603,7 +582,10 @@ const ExportPendingListDialog: React.FC = ({ height={listHeight} width="100%" {...{ itemSize, itemCount }} - itemKey={getItemKey} + itemKey={(index, { items }) => { + const file = items[index] as EnteFile; + return `${file.collectionID}/${file.id}`; + }} > {Row} @@ -631,29 +613,16 @@ const ItemContainer = styled("div")` import memoize from "memoize-one"; import React, { ReactElement } from "react"; -import { - areEqual, - FixedSizeList, - ListChildComponentProps, - ListItemKeySelector, -} from "react-window"; - -export interface ItemListProps { - items: T[]; - getItemTitle: (item: T) => string; - renderListItem: (item: T) => React.JSX.Element; - maxHeight?: number; - itemSize?: number; -} +import { areEqual, FixedSizeList, ListChildComponentProps } from "react-window"; interface ItemData { - renderListItem: (item: T) => React.JSX.Element; + allCollectionsNameByID: Map; getItemTitle: (item: T) => string; items: T[]; } const createItemData: ( - renderListItem: (item: T) => React.JSX.Element, + allCollectionsNameByID: Map, getItemTitle: (item: T) => string, items: T[], ) => ItemData = memoize((renderListItem, getItemTitle, items) => ({ @@ -669,7 +638,8 @@ const Row: ({ data, }: ListChildComponentProps>) => ReactElement = React.memo( ({ index, style, data }) => { - const { renderListItem, items, getItemTitle } = data; + const { allCollectionsNameByID, items, getItemTitle } = data; + const file = items[index] as EnteFile; return ( ({ enterDelay={300} enterNextDelay={100} > -
{renderListItem(items[index])}
+
+ {" "} + + + + + + {`${allCollectionsNameByID.get(file.collectionID)} / ${ + file.metadata.title + }`} + + +
); }, areEqual, ); - -export default function ItemList(props: ItemListProps) {}