/** * 会话列表 */ import React, { Component } from 'react'; import { connect } from 'dva'; import { Pagination, Drawer, Badge, message, Row, Popover, Avatar } from 'antd'; import { getDate, getTime, isToday } from '../../../utils/utils'; import './im.less'; import tim from '../../../utils/imInitialize'; import TIM from 'tim-js-sdk'; import CurrentConversation from './CurrentConversation'; @connect(state => ({ conversationList: state.im.conversationList, currentConversation: state.im.currentConversation, nextReqMessageID: state.im.nextReqMessageID, isCompleted: state.im.isCompleted, currentMessageList: state.im.currentMessageList })) export default class ConversationList extends Component { constructor(props) { super(props); this.state = { visible: props.visible, clicked: false, hovered: false, conversationID: props.currentConversation.conversationID }; } componentDidMount() { // this.selectConversation(this.props.conversationID) } componentWillReceiveProps(nextProps) { if (this.state.conversationID!==nextProps.currentConversation.conversationID) { this.setState({ conversationID: nextProps.currentConversation.conversationID }) } // this.setState({ // visible: nextPsrops.visible, // conversationID: nextProps.conversationID // }); } getDate(data) { const date = new Date(data * 1000); if (isToday(date)) { return getTime(date); } return getDate(date); } //切换会话 selectConversation(conversationID) { // 1.切换会话前,将切换前的会话进行已读上报 if (this.props.conversationID) { tim.setMessageRead({ conversationID: this.props.conversation && this.props.conversation.conversationID // conversationID: this.props.conversationID }); } // 2.待切换的会话也进行已读上报 tim.setMessageRead({ conversationID }); this.props.dispatch({ type: 'im/totalUnreadCount', payload: '' }); // 3. 获取会话信息 return tim.getConversationProfile(conversationID).then(({ data }) => { // // 3.1 更新当前会话 this.props.dispatch({ type: `im/updateCurrentConversation`, payload: data.conversation }); // 3.2 获取消息列表 this.getMessageList(conversationID); return Promise.resolve(); },err=>{ message.error(err.toString()) }); } getMessageList(conversationID) { if (this.props.isCompleted) { message.info('没有更多的历史消息了'); return; } const { nextReqMessageID, currentMessageList } = this.props; tim .getMessageList({ conversationID, nextReqMessageID, count: 15 }) .then(imReponse => { // 更新messageID,续拉时要用到 this.props.dispatch({ type: 'im/updateCurrentConversationCont', payload: { nextReqMessageID: imReponse.data.nextReqMessageID, isCompleted: imReponse.data.isCompleted, currentMessageList: [ ...imReponse.data.messageList, ...currentMessageList ] // 更新当前消息列表,从头部插入 } }); }); } // setConversationId(index) { // this.setState({ // ['popClickeState' + index]: true // }); // } render() { return (