summaryrefslogtreecommitdiffstats
path: root/webapp/components/user_profile.jsx
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-05-01 17:40:54 -0400
committerJoram Wilander <jwawilander@gmail.com>2017-05-01 17:40:54 -0400
commit581bd8637fa860fa26f60d8089c5d6e3f613d23f (patch)
treeb0ba799af7f873b460e45f5e6057b357be0e8047 /webapp/components/user_profile.jsx
parent935405f19d4a0d78f1a84964460635ec5a091e0c (diff)
downloadchat-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/user_profile.jsx')
-rw-r--r--webapp/components/user_profile.jsx111
1 files changed, 111 insertions, 0 deletions
diff --git a/webapp/components/user_profile.jsx b/webapp/components/user_profile.jsx
new file mode 100644
index 000000000..37993094b
--- /dev/null
+++ b/webapp/components/user_profile.jsx
@@ -0,0 +1,111 @@
+// Copyright (c) 2015-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 Client from 'client/web_client.jsx';
+
+import {OverlayTrigger} from 'react-bootstrap';
+
+import React from 'react';
+
+export default class UserProfile 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.overwriteName !== this.props.overwriteName) {
+ return true;
+ }
+
+ if (nextProps.overwriteImage !== this.props.overwriteImage) {
+ return true;
+ }
+
+ if (nextProps.disablePopover !== this.props.disablePopover) {
+ return true;
+ }
+
+ if (nextProps.displayNameType !== this.props.displayNameType) {
+ return true;
+ }
+
+ if (nextProps.status !== this.props.status) {
+ return true;
+ }
+
+ if (nextProps.isBusy !== this.props.isBusy) {
+ return true;
+ }
+
+ return false;
+ }
+
+ hideProfilePopover() {
+ this.refs.overlay.hide();
+ }
+
+ render() {
+ let name = '...';
+ let profileImg = '';
+ if (this.props.user) {
+ name = Utils.displayUsername(this.props.user.id);
+ profileImg = Client.getUsersRoute() + '/' + this.props.user.id + '/image?time=' + this.props.user.last_picture_update;
+ }
+
+ if (this.props.overwriteName) {
+ name = this.props.overwriteName;
+ }
+
+ if (this.props.disablePopover) {
+ return <div className='user-popover'>{name}</div>;
+ }
+
+ return (
+ <OverlayTrigger
+ ref='overlay'
+ trigger='click'
+ placement='right'
+ rootClose={true}
+ overlay={
+ <ProfilePopover
+ user={this.props.user}
+ src={profileImg}
+ status={this.props.status}
+ isBusy={this.props.isBusy}
+ hide={this.hideProfilePopover}
+ />
+ }
+ >
+ <div
+ className='user-popover'
+ id={'profile_' + this.uniqueId}
+ >
+ {name}
+ </div>
+ </OverlayTrigger>
+ );
+ }
+}
+
+UserProfile.defaultProps = {
+ user: {},
+ overwriteName: '',
+ overwriteImage: '',
+ disablePopover: false
+};
+UserProfile.propTypes = {
+ user: React.PropTypes.object,
+ overwriteName: React.PropTypes.node,
+ overwriteImage: React.PropTypes.string,
+ disablePopover: React.PropTypes.bool,
+ displayNameType: React.PropTypes.string,
+ status: React.PropTypes.string,
+ isBusy: React.PropTypes.bool
+};