import ImmutablePropTypes from 'react-immutable-proptypes' import ImmutablePureComponent from 'react-immutable-pure-component' import { Map as ImmutableMap } from 'immutable' import classNames from 'classnames' import { autoPlayGif } from '../../initial_state' export default class Avatar extends ImmutablePureComponent { static propTypes = { account: ImmutablePropTypes.map, size: PropTypes.number, inline: PropTypes.bool, animate: PropTypes.bool, } static defaultProps = { account: ImmutableMap(), animate: autoPlayGif, inline: false, } state = { hovering: false, sameImg: this.props.account.get('avatar') === this.props.account.get('avatar_static'), } handleMouseEnter = () => { if (this.props.animate || this.state.sameImg) return this.setState({ hovering: true }) } handleMouseLeave = () => { if (this.props.animate || this.state.sameImg) return this.setState({ hovering: false }) } render () { const { account, size, animate, inline } = this.props const { hovering } = this.state // : TODO : remove inline and change all avatars to be sized using css const style = !size ? {} : { width: `${size}px`, height: `${size}px`, } const theSrc = account.get((hovering || animate) ? 'avatar' : 'avatar_static') return ( {account.get('display_name')} ) } }