import { Badge, Card, List, Space, 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 { OwnerNameDisplayFunction } from "../owner-name-display/owner-name-display.component"; import _ from "lodash"; 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]; const cardContentRight = {item.updated_at}; const cardContentLeft = item.job_conversations.length > 0 ? item.job_conversations.map((j, idx) => {j.job.ro_number}) : null; const names = <>{_.uniq(item.job_conversations.map((j, idx) => OwnerNameDisplayFunction(j.job)))}; const cardTitle = ( <> {item.label && {item.label}} {item.job_conversations.length > 0 ? ( {names} ) : ( {item.phone_num} )} ); const cardExtra = ; const getCardStyle = () => item.id === selectedConversation ? { backgroundColor: "rgba(128, 128, 128, 0.2)" } : { backgroundColor: index % 2 === 0 ? "#f0f2f5" : "#ffffff" }; return ( setSelectedConversation(item.id)} style={style} className={`chat-list-item ${item.id === selectedConversation ? "chat-list-selected-conversation" : null}`} >
{cardContentLeft}
{cardContentRight}
); }; return (
{({ height, width }) => ( { if (scrollTop + clientHeight === scrollHeight) { loadMoreConversations(); } }} /> )}
); } export default connect(mapStateToProps, mapDispatchToProps)(ChatConversationListComponent);