import { Badge, List, Tag } from "antd"; import React from "react"; import { connect } from "react-redux"; import { AutoSizer, CellMeasurer, CellMeasurerCache, List as VirtualizedList, } from "react-virtualized"; import { createStructuredSelector } from "reselect"; import { setSelectedConversation } from "../../redux/messaging/messaging.actions"; import { selectSelectedConversation } from "../../redux/messaging/messaging.selectors"; import { TimeAgoFormatter } from "../../utils/DateFormatter"; import PhoneFormatter from "../../utils/PhoneFormatter"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; import "./chat-conversation-list.styles.scss"; const mapStateToProps = createStructuredSelector({ selectedConversation: selectSelectedConversation, }); const mapDispatchToProps = (dispatch) => ({ setSelectedConversation: (conversationId) => dispatch(setSelectedConversation(conversationId)), }); function ChatConversationListComponent({ conversationList, selectedConversation, setSelectedConversation, loadMoreConversations, }) { const cache = new CellMeasurerCache({ fixedWidth: true, defaultHeight: 60, }); const rowRenderer = ({ index, key, style, parent }) => { const item = conversationList[index]; return ( setSelectedConversation(item.id)} className={`chat-list-item ${ item.id === selectedConversation ? "chat-list-selected-conversation" : null }`} style={style} >
{item.label &&
{item.label}
} {item.job_conversations.length > 0 ? (
{item.job_conversations.map((j, idx) => (
))}
) : ( {item.phone_num} )}
{item.job_conversations.length > 0 ? item.job_conversations.map((j, idx) => ( {j.job.ro_number} )) : null}
{item.updated_at}
); }; return (
{({ height, width }) => ( { if (scrollTop + clientHeight === scrollHeight) { loadMoreConversations(); } }} /> )}
); } export default connect( mapStateToProps, mapDispatchToProps )(ChatConversationListComponent);