import React, {PropTypes} from 'react'; import {Button} from 'coral-ui'; import Comment from '../containers/Comment'; import CommentBox from 'coral-plugin-commentbox/CommentBox'; import SuspendedAccount from 'coral-framework/components/SuspendedAccount'; import RestrictedContent from 'coral-framework/components/RestrictedContent'; import ChangeUsernameContainer from 'coral-sign-in/containers/ChangeUsernameContainer'; import IgnoredCommentTombstone from './IgnoredCommentTombstone'; import InfoBox from 'coral-plugin-infobox/InfoBox'; import QuestionBox from 'coral-plugin-questionbox/QuestionBox'; import LoadMore from './LoadMore'; import NewCount from './NewCount'; import {ModerationLink} from 'coral-plugin-moderation'; class Stream extends React.Component { setActiveReplyBox = (reactKey) => { if (!this.props.auth.user) { this.props.showSignInDialog(); } else { this.props.setActiveReplyBox(reactKey); } } render () { const { root: {asset, asset: {comments}, comment, myIgnoredUsers}, postItem, addNotification, postFlag, postLike, postDontAgree, loadMore, deleteAction, showSignInDialog, addCommentTag, removeCommentTag, pluginProps, ignoreUser, auth: {loggedIn, isAdmin, user}, commentCountCache, editName, } = this.props; const open = asset.closedAt === null; // even though the permalinked comment is the highlighted one, we're displaying its parent + replies const highlightedComment = comment && comment.parent ? comment.parent : comment; const banned = user && user.status === 'BANNED'; const hasOlderComments = !!( asset && asset.lastComment && asset.lastComment.id !== asset.comments[asset.comments.length - 1].id ); // Find the created_at date of the first comment. If no comments exist, set the date to a week ago. const firstCommentDate = asset.comments[0] ? asset.comments[0].created_at : new Date(Date.now() - 1000 * 60 * 60 * 24 * 7).toISOString(); const commentIsIgnored = (comment) => myIgnoredUsers && myIgnoredUsers.includes(comment.user.id); return (
{ open ?
}> { user ? : null }
:

{asset.settings.closedMessage}

} {!loggedIn && } {loggedIn && user && } {loggedIn && } {/* the highlightedComment is isolated after the user followed a permalink */} { highlightedComment ? :
{ comments.map(comment => commentIsIgnored(comment) ? : ) }
}
); } } Stream.propTypes = { addNotification: PropTypes.func.isRequired, postItem: PropTypes.func.isRequired, // dispatch action to add a tag to a comment addCommentTag: PropTypes.func, // dispatch action to remove a tag from a comment removeCommentTag: PropTypes.func, // dispatch action to ignore another user ignoreUser: React.PropTypes.func, }; export default Stream;