Chats: memoize sorted chat IDs list

This commit is contained in:
Alex Gleason 2021-07-01 18:14:40 -05:00
parent 0ac34db821
commit 319af71327
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
1 changed files with 19 additions and 9 deletions

View File

@ -5,6 +5,14 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component';
import Chat from './chat';
import { createSelector } from 'reselect';
const getSortedChatIds = chats => (
chats
.toList()
.sort(chatDateComparator)
.map(chat => chat.get('id'))
);
const chatDateComparator = (chatA, chatB) => {
// Sort most recently updated chats at the top
@ -17,18 +25,20 @@ const chatDateComparator = (chatA, chatB) => {
return 0;
};
const mapStateToProps = state => {
const chatIds = state.get('chats')
.toList()
.sort(chatDateComparator)
.map(chat => chat.get('id'));
const makeMapStateToProps = () => {
const sortedChatIdsSelector = createSelector(
[getSortedChatIds],
chats => chats,
);
return {
chatIds,
};
const mapStateToProps = state => ({
chatIds: sortedChatIdsSelector(state.get('chats')),
});
return mapStateToProps;
};
export default @connect(mapStateToProps)
export default @connect(makeMapStateToProps)
@injectIntl
class ChatList extends ImmutablePureComponent {