import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import { injectIntl } from 'react-intl'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { fetchChats } from 'soapbox/actions/chats'; import ChatListAccount from './chat_list_account'; import { makeGetChat } from 'soapbox/selectors'; const chatDateComparator = (chatA, chatB) => { // Sort most recently updated chats at the top const a = new Date(chatA.get('updated_at')); const b = new Date(chatB.get('updated_at')); if (a === b) return 0; if (a > b) return -1; if (a < b) return 1; return 0; }; const mapStateToProps = state => { const getChat = makeGetChat(); return { chats: state.get('chats').map(chat => getChat(state, chat.toJS())).toList().sort(chatDateComparator), }; }; export default @connect(mapStateToProps) @injectIntl class ChatList extends ImmutablePureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, onClickChat: PropTypes.func, emptyMessage: PropTypes.node, }; componentDidMount() { this.props.dispatch(fetchChats()); } render() { const { chats, emptyMessage } = this.props; return (
{chats.count() === 0 &&
{emptyMessage}
} {chats.map(chat => (
))}
); } }