// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import PostMessageContainer from 'components/post_view/post_message_view';
import UserProfile from './user_profile.jsx';
import FileAttachmentListContainer from 'components/file_attachment_list';
import ProfilePicture from './profile_picture.jsx';
import CommentIcon from 'components/common/comment_icon.jsx';
import DotMenu from 'components/dot_menu';
import PostFlagIcon from 'components/post_view/post_flag_icon.jsx';
import TeamStore from 'stores/team_store.jsx';
import * as GlobalActions from 'actions/global_actions.jsx';
import * as Utils from 'utils/utils.jsx';
import * as PostUtils from 'utils/post_utils.jsx';
import Constants from 'utils/constants.jsx';
import React from 'react';
import PropTypes from 'prop-types';
import {FormattedMessage, FormattedDate} from 'react-intl';
import {browserHistory, Link} from 'react-router/es6';
export default class SearchResultsItem extends React.Component {
constructor(props) {
super(props);
this.handleFocusRHSClick = this.handleFocusRHSClick.bind(this);
this.handleJumpClick = this.handleJumpClick.bind(this);
this.handleDropdownOpened = this.handleDropdownOpened.bind(this);
this.shrinkSidebar = this.shrinkSidebar.bind(this);
this.state = {
currentTeamDisplayName: TeamStore.getCurrent().name,
width: '',
height: '',
dropdownOpened: false
};
}
shouldComponentUpdate(nextProps, nextState) {
if (!Utils.areObjectsEqual(nextState.post, this.props.post)) {
return true;
}
if (nextProps.isFlagged !== this.props.isFlagged) {
return true;
}
if (nextState.dropdownOpened !== this.state.dropdownOpened) {
return true;
}
return false;
}
componentDidMount() {
window.addEventListener('resize', () => {
Utils.updateWindowDimensions(this);
});
}
componentWillUnmount() {
window.removeEventListener('resize', () => {
Utils.updateWindowDimensions(this);
});
}
shrinkSidebar() {
setTimeout(() => {
this.props.shrink();
});
}
handleFocusRHSClick(e) {
e.preventDefault();
GlobalActions.emitPostFocusRightHandSideFromSearch(this.props.post, this.props.isMentionSearch);
}
handleJumpClick() {
if (Utils.isMobile()) {
GlobalActions.toggleSideBarAction(false);
}
this.shrinkSidebar();
browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/pl/' + this.props.post.id);
}
handleDropdownOpened = (isOpened) => {
this.setState({
dropdownOpened: isOpened
});
}
timeTag(post) {
return (
);
}
renderTimeTag(post) {
return Utils.isMobile() ?
this.timeTag(post) :
(
{this.timeTag(post)}
);
}
getClassName = () => {
let className = 'post post--thread';
if (this.props.compactDisplay) {
className = ' post--compact';
}
if (this.state.dropdownOpened) {
className += ' post--hovered';
}
return className;
}
render() {
let channelName = null;
const channel = this.props.channel;
const user = this.props.user || {};
const post = this.props.post;
let idCount = -1;
if (this.props.lastPostCount >= 0 && this.props.lastPostCount < Constants.TEST_ID_COUNT) {
idCount = this.props.lastPostCount;
}
if (channel) {
channelName = channel.display_name;
if (channel.type === 'D') {
channelName = (