import React from 'react'; import md5 from 'md5'; import PropTypes from 'prop-types'; const DEFAULT_IMAGE = '/images/icons/user.svg'; // TODO UserComponent? export default class UserPicture extends React.Component { getUserPicture(user) { // gravatar if (user.isGravatarEnabled === true) { return this.generateGravatarSrc(user); } // uploaded image if (user.image != null) { return user.image; } if (user.imageAttachment != null) { return user.imageAttachment.filePathProxied; } return DEFAULT_IMAGE; } generateGravatarSrc(user) { const email = user.email || ''; const hash = md5(email.trim().toLowerCase()); return `https://gravatar.com/avatar/${hash}`; } getClassName() { const className = ['img-circle', 'picture']; // size if (this.props.size) { className.push(`picture-${this.props.size}`); } return className.join(' '); } renderForNull() { return ( someone ); } render() { const user = this.props.user; if (user == null) { return this.renderForNull(); } const imgElem = ( {user.username} ); return ( (this.props.withoutLink) ? {imgElem} : {imgElem} ); } } UserPicture.propTypes = { user: PropTypes.object, size: PropTypes.string, withoutLink: PropTypes.bool, }; UserPicture.defaultProps = { size: null, };