/** * 会话列表 */ 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 (
{this.props.conversationList.map((item, index) => { let showPopClickeState = false; if (this.state.conversationID === item.conversationID) { // this.setState({ // ['popClickeState' + index]: true // }); showPopClickeState = true; } if (item.type === '@TIM#SYSTEM') { return ''; } // const date = this.getDate(item.lastMessage.lastTime); let avatar = ''; let name = ''; // let letShowCovId = false; if (item.type === 'C2C') { avatar = item.userProfile.avatar; name = item.userProfile.nick; } else if (item.type === 'GROUP') { name = item.groupProfile.name; avatar = require('../../../assets/images/avatar.png'); } //单人 // if (this.state.conversationID === item.conversationID) { // letShowCovId = true; // this.setConversationId(index); // } return (
{name}
{/*
s
*/}
} trigger="hover" visible={this.state['hovered' + index]} onVisibleChange={visible => { this.setState({ ['hovered' + index]: visible // clicked: false }); }} > { // this.setState({ // conversationID: item.conversationID // }); // this.setState({ // ['popClickeState' + index]: visible // // hovered: false // }); }} content={ { // this.props.closeClick(); // this.setState({ // conversationID: null, // ['popClickeState' + index]: false // }); // this.setState({ conversationID: null }, () => { // }); }} /> } trigger="click" >
{ this.selectConversation(item.conversationID); // this.setState({ // conversationID: item.conversationID // }); }} className="avatar" > {item.type === 'C2C' ? ( avatar ? ( ) : ( {name.substring(name.length - 2, name.length)} ) ) : ( )}
//样式改变,删除 // { // this.selectConversation(item.conversationID); // }} // className={ // this.props.currentConversation.conversationID === // item.conversationID // ? 'current-conversation-item' // : '' // } // > // // // // //
// {item.type === TIM.TYPES.CONV_C2C // ? item.userProfile.nick // : item.type === TIM.TYPES.CONV_GROUP // ? item.groupProfile.name // : item.type === TIM.TYPES.CONV_SYSTEM?'系统通知':''} // //
//
// // {item.lastMessage.messageForShow} // // {date} //
// //
); })} ); } }