Comment.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import moment from 'moment/src/moment';
  4. import UserPicture from '../User/UserPicture';
  5. export default class Comment extends React.Component {
  6. constructor(props) {
  7. super(props);
  8. this.getRootClassName = this.getRootClassName.bind(this);
  9. }
  10. getRootClassName() {
  11. let className = "page-comment"
  12. if (this.props.comment.creator._id === this.props.currentUserId) {
  13. className += ' page-comment-me'
  14. }
  15. return className;
  16. }
  17. render() {
  18. const comment = this.props.comment;
  19. const creator = comment.creator;
  20. const rootClassName = this.getRootClassName();
  21. const commentDate = moment(comment.createdAt).format('YYYY/MM/DD HH:mm:ss');
  22. const revHref = `?revision=${comment.revision}`;
  23. const revFirst8Letters = comment.revision.substr(0,8);
  24. return (
  25. <div className={rootClassName}>
  26. <UserPicture user={creator} />
  27. <div className="page-comment-main">
  28. <div className="page-comment-creator">{creator.username}</div>
  29. <div className="page-comment-body">{comment.comment.replace(/(\r\n|\r|\n)/g, '<br>')}</div>
  30. <div className="page-comment-meta">
  31. {commentDate}&nbsp;
  32. <a className="page-comment-revision label label-primary" href={revHref}>{revFirst8Letters}</a>
  33. </div>
  34. </div>
  35. </div>
  36. );
  37. }
  38. }
  39. Comment.propTypes = {
  40. comment: PropTypes.object.isRequired,
  41. currentUserId: PropTypes.string.isRequired,
  42. };