diff --git a/package.json b/package.json index e8434874f..09bcbd2ff 100644 --- a/package.json +++ b/package.json @@ -166,7 +166,7 @@ "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", "@types/react-redux": "^7.1.24", - "@types/react-virtualized": "9.18.12", + "@types/react-virtualized": "^9.21.30", "@types/redux-logger": "3.0.7", "@types/rimraf": "2.0.2", "@types/semver": "5.5.0", diff --git a/ts/components/leftpane/LeftPaneMessageSection.tsx b/ts/components/leftpane/LeftPaneMessageSection.tsx index 0727d0565..b87d5d022 100644 --- a/ts/components/leftpane/LeftPaneMessageSection.tsx +++ b/ts/components/leftpane/LeftPaneMessageSection.tsx @@ -63,74 +63,78 @@ const ClosableOverlay = () => { } }; -export const LeftPaneMessageSection = () => { - const conversationIds = useSelector(getLeftPaneConversationIds); - const leftOverlayMode = useSelector(getLeftOverlayMode); - const searchTerm = useSelector(getSearchTerm); - - const renderRow = ({ index, key, style }: ListRowProps): JSX.Element | null => { - // assume conversations that have been marked unapproved should be filtered out by selector. - if (!conversationIds) { - throw new Error('renderRow: Tried to render without conversations'); - } - - const conversationId = conversationIds[index]; - if (!conversationId) { - throw new Error('renderRow: conversations selector returned element containing falsy value.'); - } +const ConversationRow = ( + conversationIds: Array, + { index, key, style }: ListRowProps +): JSX.Element | null => { + // assume conversations that have been marked unapproved should be filtered out by selector. + if (!conversationIds) { + throw new Error('ConversationRow: Tried to render without conversations'); + } - return ; - }; + const conversationId = conversationIds[index]; + if (!conversationId) { + throw new Error( + 'ConversationRow: conversations selector returned element containing falsy value.' + ); + } - const renderList = () => { - if (!isEmpty(searchTerm)) { - return ; - } + return ; +}; - if (!conversationIds) { - throw new Error('render: must provided conversations if no search results are provided'); - } +const ConversationList = () => { + const searchTerm = useSelector(getSearchTerm); + const conversationIds = useSelector(getLeftPaneConversationIds); - const length = conversationIds.length; + if (!isEmpty(searchTerm)) { + return ; + } - return ( - - - {({ height, width }) => ( - - )} - - + if (!conversationIds) { + throw new Error( + 'ConversationList: must provided conversations if no search results are provided' ); - }; + } - const renderConversations = () => { - return ( - - - { - window.inboxStore?.dispatch(setLeftOverlayMode('message-requests')); - }} - /> - {renderList()} - - ); - }; + return ( + + + {({ height, width }) => ( + ConversationRow(conversationIds, props)} + width={width} + autoHeight={false} + conversationIds={conversationIds} + /> + )} + + + ); +}; + +export const LeftPaneMessageSection = () => { + const leftOverlayMode = useSelector(getLeftOverlayMode); return ( - {leftOverlayMode ? : renderConversations()} + {leftOverlayMode ? ( + + ) : ( + + + { + window.inboxStore?.dispatch(setLeftOverlayMode('message-requests')); + }} + /> + + + )} ); }; diff --git a/yarn.lock b/yarn.lock index 80c34e72c..05e4051d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -994,10 +994,10 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-virtualized@9.18.12": - version "9.18.12" - resolved "https://registry.yarnpkg.com/@types/react-virtualized/-/react-virtualized-9.18.12.tgz#541e65c5e0b4629d6a1c6f339171c7943e016ecb" - integrity sha512-Msdpt9zvYlb5Ul4PA339QUkJ0/z2O+gaFxed1rG+2rZjbe6XdYo7jWfJe206KBnjj84DwPPIbPFQCtoGuNwNTQ== +"@types/react-virtualized@^9.21.30": + version "9.21.30" + resolved "https://registry.yarnpkg.com/@types/react-virtualized/-/react-virtualized-9.21.30.tgz#ba39821bcb2487512a8a2cdd9fbdb5e6fc87fedb" + integrity sha512-4l2TFLQ8BCjNDQlvH85tU6gctuZoEdgYzENQyZHpgTHU7hoLzYgPSOALMAeA58LOWua8AzC6wBivPj1lfl6JgQ== dependencies: "@types/prop-types" "*" "@types/react" "*"