Vulcan/packages/nova-base-components/lib/posts/PostsCommentsThread.jsx

44 lines
1.5 KiB
React
Raw Normal View History

2016-08-08 11:18:21 +09:00
import Telescope from 'meteor/nova:lib';
import React from 'react';
2016-06-09 17:42:20 +09:00
import {FormattedMessage } from 'react-intl';
2016-05-22 15:23:30 +09:00
import { ModalTrigger } from "meteor/nova:core";
2016-06-23 12:17:39 +09:00
import Comments from "meteor/nova:comments";
2016-11-07 23:46:12 +09:00
const PostsCommentsThread = (props, context) => {
const {postId, results, commentCount} = props;
2016-11-07 16:46:55 +01:00
const resultsClone = _.map(results, _.clone); // we don't want to modify the objects we got from props
const nestedComments = Telescope.utils.unflatten(resultsClone, '_id', 'parentCommentId');
2016-11-09 11:55:12 +09:00
2016-11-07 16:46:55 +01:00
return (
<div className="posts-comments-thread">
<h4 className="posts-comments-thread-title"><FormattedMessage id="comments.comments"/></h4>
2016-11-09 11:55:12 +09:00
<Telescope.components.CommentsList comments={nestedComments} commentCount={commentCount}/>
2016-11-07 16:46:55 +01:00
{ context.currentUser ?
<div className="posts-comments-thread-new">
<h4><FormattedMessage id="comments.new"/></h4>
<Telescope.components.CommentsNewForm
postId={postId}
type="comment"
/>
</div> :
<div>
<ModalTrigger size="small" component={<a><FormattedMessage id="comments.please_log_in"/></a>}>
<Telescope.components.UsersAccountForm/>
</ModalTrigger>
</div>
}
</div>
);
};
PostsCommentsThread.displayName = "PostsCommentsThread";
PostsCommentsThread.contextTypes = {
currentUser: React.PropTypes.object
};
module.exports = PostsCommentsThread;
export default PostsCommentsThread;