// this component will // render its children // render a like button // render a permalink button // render a reply button // render a flag button // translate things? import React, {PropTypes} from 'react'; import PermalinkButton from 'coral-plugin-permalinks/PermalinkButton'; import AuthorName from 'coral-plugin-author-name/AuthorName'; import Content from 'coral-plugin-commentcontent/CommentContent'; import PubDate from 'coral-plugin-pubdate/PubDate'; import {ReplyBox, ReplyButton} from 'coral-plugin-replies'; import FlagComment from 'coral-plugin-flags/FlagComment'; import LikeButton from 'coral-plugin-likes/LikeButton'; import styles from './Comment.css'; const getAction = (type, comment) => comment.actions.filter((a) => a.type === type)[0]; class Comment extends React.Component { constructor(props) { super(props); this.state = {replyBoxVisible: false}; } static propTypes = { reactKey: PropTypes.string.isRequired, // id of currently opened ReplyBox. tracked in Stream.js activeReplyBox: PropTypes.string.isRequired, setActiveReplyBox: PropTypes.func.isRequired, refetch: PropTypes.func.isRequired, showSignInDialog: PropTypes.func.isRequired, postAction: PropTypes.func.isRequired, deleteAction: PropTypes.func.isRequired, parentId: PropTypes.string, addNotification: PropTypes.func.isRequired, postItem: PropTypes.func.isRequired, depth: PropTypes.number.isRequired, asset: PropTypes.shape({ id: PropTypes.string, title: PropTypes.string, url: PropTypes.string }).isRequired, currentUser: PropTypes.shape({ id: PropTypes.string.isRequired }), comment: PropTypes.shape({ depth: PropTypes.number, actions: PropTypes.array.isRequired, body: PropTypes.string.isRequired, id: PropTypes.string.isRequired, replies: PropTypes.arrayOf( PropTypes.shape({ body: PropTypes.string.isRequired, id: PropTypes.string.isRequired }) ), user: PropTypes.shape({ id: PropTypes.string.isRequired, name: PropTypes.string.isRequired }).isRequired }).isRequired } render () { const { comment, parentId, currentUser, asset, depth, postItem, refetch, addNotification, showSignInDialog, postAction, setActiveReplyBox, activeReplyBox, deleteAction } = this.props; const like = getAction('LIKE', comment); const flag = getAction('FLAG', comment); return (

setActiveReplyBox(comment.id)} parentCommentId={parentId || comment.id} currentUserId={currentUser && currentUser.id} banned={false} />
{ activeReplyBox === comment.id ? { setActiveReplyBox(''); refetch(); }} setActiveReplyBox={setActiveReplyBox} parentId={parentId || comment.id} addNotification={addNotification} authorId={currentUser.id} postItem={postItem} assetId={asset.id} /> : null } { comment.replies && comment.replies.map(reply => { return ; }) }
); } } export default Comment;