// Copyright (c) 2015 Mattermost, Inc. All Rights Reserved. // See License.txt for license information. import * as Utils from '../utils/utils.jsx'; import TimeSince from './time_since.jsx'; import * as GlobalActions from '../action_creators/global_actions.jsx'; import Constants from '../utils/constants.jsx'; import {FormattedMessage} from 'mm-intl'; export default class PostInfo extends React.Component { constructor(props) { super(props); this.dropdownPosition = this.dropdownPosition.bind(this); this.handlePermalink = this.handlePermalink.bind(this); this.removePost = this.removePost.bind(this); } dropdownPosition(e) { var position = $('#post-list').height() - $(e.target).offset().top; var dropdown = $(e.target).next('.dropdown-menu'); if (position < dropdown.height()) { dropdown.addClass('bottom'); } } createDropdown() { var post = this.props.post; var isOwner = this.props.currentUser.id === post.user_id; var isAdmin = Utils.isAdmin(this.props.currentUser.roles); if (post.state === Constants.POST_FAILED || post.state === Constants.POST_LOADING || Utils.isPostEphemeral(post)) { return ''; } var type = 'Post'; if (post.root_id && post.root_id.length > 0) { type = 'Comment'; } var dropdownContents = []; var dataComments = 0; if (type === 'Post') { dataComments = this.props.commentCount; } if (this.props.allowReply === 'true') { dropdownContents.push(
  • ); } if (!Utils.isMobile()) { dropdownContents.push(
  • ); } if (isOwner || isAdmin) { dropdownContents.push(
  • GlobalActions.showDeletePostModal(post, dataComments)} >
  • ); } if (isOwner) { dropdownContents.push(
  • ); } if (dropdownContents.length === 0) { return ''; } return (
    {'×'} ); } render() { var post = this.props.post; var comments = ''; var showCommentClass = ''; var commentCountText = this.props.commentCount; if (this.props.commentCount >= 1) { showCommentClass = ' icon--show'; } else { commentCountText = ''; } if (post.state !== Constants.POST_FAILED && post.state !== Constants.POST_LOADING && !Utils.isPostEphemeral(post)) { comments = ( {commentCountText} ); } var dropdown = this.createDropdown(); return ( ); } } PostInfo.defaultProps = { post: null, commentCount: 0, isLastComment: false, allowReply: false, sameUser: false }; PostInfo.propTypes = { post: React.PropTypes.object.isRequired, commentCount: React.PropTypes.number.isRequired, isLastComment: React.PropTypes.bool.isRequired, allowReply: React.PropTypes.string.isRequired, handleCommentClick: React.PropTypes.func.isRequired, sameUser: React.PropTypes.bool.isRequired, currentUser: React.PropTypes.object.isRequired };