diff options
author | Harrison Healey <harrisonmhealey@gmail.com> | 2017-05-01 17:40:54 -0400 |
---|---|---|
committer | Joram Wilander <jwawilander@gmail.com> | 2017-05-01 17:40:54 -0400 |
commit | 581bd8637fa860fa26f60d8089c5d6e3f613d23f (patch) | |
tree | b0ba799af7f873b460e45f5e6057b357be0e8047 /webapp/components/profile_picture.jsx | |
parent | 935405f19d4a0d78f1a84964460635ec5a091e0c (diff) | |
download | chat-581bd8637fa860fa26f60d8089c5d6e3f613d23f.tar.gz chat-581bd8637fa860fa26f60d8089c5d6e3f613d23f.tar.bz2 chat-581bd8637fa860fa26f60d8089c5d6e3f613d23f.zip |
Revert "[GH-5915] Clicking on @mention of a user in a post shows the profile popover (#6129)" (#6289)
This reverts commit 83f819451a80a767170b927eb2f0d5ed63f03239.
Diffstat (limited to 'webapp/components/profile_picture.jsx')
-rw-r--r-- | webapp/components/profile_picture.jsx | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/webapp/components/profile_picture.jsx b/webapp/components/profile_picture.jsx new file mode 100644 index 000000000..b7ee08785 --- /dev/null +++ b/webapp/components/profile_picture.jsx @@ -0,0 +1,103 @@ +// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. +import ProfilePopover from './profile_popover.jsx'; +import * as Utils from 'utils/utils.jsx'; + +import React from 'react'; +import StatusIcon from './status_icon.jsx'; +import {OverlayTrigger} from 'react-bootstrap'; + +export default class ProfilePicture extends React.Component { + constructor(props) { + super(props); + + this.hideProfilePopover = this.hideProfilePopover.bind(this); + } + shouldComponentUpdate(nextProps) { + if (!Utils.areObjectsEqual(nextProps.user, this.props.user)) { + return true; + } + + if (nextProps.src !== this.props.src) { + return true; + } + + if (nextProps.status !== this.props.status) { + return true; + } + + if (nextProps.width !== this.props.width) { + return true; + } + + if (nextProps.height !== this.props.height) { + return true; + } + + if (nextProps.isBusy !== this.props.isBusy) { + return true; + } + + return false; + } + + hideProfilePopover() { + this.refs.overlay.hide(); + } + + render() { + if (this.props.user) { + return ( + <OverlayTrigger + ref='overlay' + trigger='click' + placement='right' + rootClose={true} + overlay={ + <ProfilePopover + user={this.props.user} + src={this.props.src} + status={this.props.status} + isBusy={this.props.isBusy} + hide={this.hideProfilePopover} + /> + } + > + <span className='status-wrapper'> + <img + className='more-modal__image' + width={this.props.width} + height={this.props.width} + src={this.props.src} + /> + <StatusIcon status={this.props.status}/> + </span> + </OverlayTrigger> + ); + } + return ( + <span className='status-wrapper'> + <img + className='more-modal__image' + width={this.props.width} + height={this.props.width} + src={this.props.src} + /> + <StatusIcon status={this.props.status}/> + </span> + ); + } +} + +ProfilePicture.defaultProps = { + width: '36', + height: '36' +}; +ProfilePicture.propTypes = { + src: React.PropTypes.string.isRequired, + status: React.PropTypes.string, + width: React.PropTypes.string, + height: React.PropTypes.string, + user: React.PropTypes.object, + isBusy: React.PropTypes.bool +}; |