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 (
);
}
render() {
const user = this.props.user;
if (user == null) {
return this.renderForNull();
}
const imgElem = (
);
return (
(this.props.withoutLink)
? {imgElem}
: {imgElem}
);
}
}
UserPicture.propTypes = {
user: PropTypes.object,
size: PropTypes.string,
withoutLink: PropTypes.bool,
};
UserPicture.defaultProps = {
size: null,
};