UserPicture.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React from 'react';
  2. import md5 from 'md5';
  3. // TODO UserComponent?
  4. export default class UserPicture extends React.Component {
  5. getUserPicture(user) {
  6. // gravater
  7. if (user.isGravaterEnabled === true) {
  8. console.log(user.username + ": isGravaterEnabled true");
  9. return this.generateGravatarSrc(user);
  10. }
  11. // uploaded image
  12. else if (user.image && user.image != '/images/userpicture.png') {
  13. return user.image;
  14. }
  15. else {
  16. return '/images/userpicture.png';
  17. }
  18. }
  19. generateGravatarSrc(user) {
  20. const hash = md5(user.email.trim().toLowerCase());
  21. return `http://www.gravatar.com/avatar/${hash}`;
  22. }
  23. getClassName() {
  24. let className = ['picture', 'picture-rounded'];
  25. if (this.props.size) {
  26. className.push('picture-' + this.props.size);
  27. }
  28. return className.join(' ');
  29. }
  30. render() {
  31. const user = this.props.user;
  32. return (
  33. <img
  34. src={this.getUserPicture(user)}
  35. alt={user.username}
  36. className={this.getClassName()}
  37. />
  38. );
  39. }
  40. }
  41. UserPicture.propTypes = {
  42. user: React.PropTypes.object.isRequired,
  43. size: React.PropTypes.string,
  44. };
  45. UserPicture.defaultProps = {
  46. user: {},
  47. size: null,
  48. };