From 581bd8637fa860fa26f60d8089c5d6e3f613d23f Mon Sep 17 00:00:00 2001 From: Harrison Healey Date: Mon, 1 May 2017 17:40:54 -0400 Subject: Revert "[GH-5915] Clicking on @mention of a user in a post shows the profile popover (#6129)" (#6289) This reverts commit 83f819451a80a767170b927eb2f0d5ed63f03239. --- .../profile_popover/atmention_profile_popover.jsx | 95 ------- .../profile_popover/picture_profile_popover.jsx | 104 -------- .../components/profile_popover/profile_popover.jsx | 296 --------------------- .../profile_popover/username_profile_popover.jsx | 111 -------- 4 files changed, 606 deletions(-) delete mode 100644 webapp/components/profile_popover/atmention_profile_popover.jsx delete mode 100644 webapp/components/profile_popover/picture_profile_popover.jsx delete mode 100644 webapp/components/profile_popover/profile_popover.jsx delete mode 100644 webapp/components/profile_popover/username_profile_popover.jsx (limited to 'webapp/components/profile_popover') diff --git a/webapp/components/profile_popover/atmention_profile_popover.jsx b/webapp/components/profile_popover/atmention_profile_popover.jsx deleted file mode 100644 index 47c625f64..000000000 --- a/webapp/components/profile_popover/atmention_profile_popover.jsx +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright (c) 2017-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 AtMentionProfile 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.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 profileImg = ''; - if (this.props.user) { - profileImg = Client.getUsersRoute() + '/' + this.props.user.id + '/image?time=' + this.props.user.last_picture_update; - } - - if (this.props.disablePopover) { - return {'@' + this.props.username}; - } - - return ( - - } - > - {'@' + this.props.username} - - ); - } -} - -AtMentionProfile.defaultProps = { - overwriteImage: '', - disablePopover: false -}; -AtMentionProfile.propTypes = { - user: React.PropTypes.object.isRequired, - username: React.PropTypes.string.isRequired, - overwriteImage: React.PropTypes.string, - disablePopover: React.PropTypes.bool, - displayNameType: React.PropTypes.string, - status: React.PropTypes.string, - isBusy: React.PropTypes.bool -}; diff --git a/webapp/components/profile_popover/picture_profile_popover.jsx b/webapp/components/profile_popover/picture_profile_popover.jsx deleted file mode 100644 index 2c2b91b25..000000000 --- a/webapp/components/profile_popover/picture_profile_popover.jsx +++ /dev/null @@ -1,104 +0,0 @@ -// 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 'components/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 ( - - } - > - - - - - - ); - } - return ( - - - - - ); - } -} - -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 -}; diff --git a/webapp/components/profile_popover/profile_popover.jsx b/webapp/components/profile_popover/profile_popover.jsx deleted file mode 100644 index a32b7904b..000000000 --- a/webapp/components/profile_popover/profile_popover.jsx +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved. -// See License.txt for license information. - -import * as Utils from 'utils/utils.jsx'; -import UserStore from 'stores/user_store.jsx'; -import WebrtcStore from 'stores/webrtc_store.jsx'; -import TeamStore from 'stores/team_store.jsx'; -import * as GlobalActions from 'actions/global_actions.jsx'; -import * as WebrtcActions from 'actions/webrtc_actions.jsx'; -import {openDirectChannelToUser} from 'actions/channel_actions.jsx'; -import Constants from 'utils/constants.jsx'; -const UserStatuses = Constants.UserStatuses; -const PreReleaseFeatures = Constants.PRE_RELEASE_FEATURES; - -import {Popover, OverlayTrigger, Tooltip} from 'react-bootstrap'; -import {FormattedMessage} from 'react-intl'; -import {browserHistory} from 'react-router/es6'; -import React from 'react'; - -export default class ProfilePopover extends React.Component { - constructor(props) { - super(props); - - this.initWebrtc = this.initWebrtc.bind(this); - this.handleShowDirectChannel = this.handleShowDirectChannel.bind(this); - this.generateImage = this.generateImage.bind(this); - this.generateFullname = this.generateFullname.bind(this); - this.generatePosition = this.generatePosition.bind(this); - this.generateWebrtc = this.generateWebrtc.bind(this); - this.generateEmail = this.generateEmail.bind(this); - this.generateDirectMessage = this.generateDirectMessage.bind(this); - - this.state = { - currentUserId: UserStore.getCurrentId(), - loadingDMChannel: -1 - }; - } - - 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.isBusy !== this.props.isBusy) { - return true; - } - - // React-Bootstrap Forwarded Props from OverlayTrigger to Popover - if (nextProps.arrowOffsetLeft !== this.props.arrowOffsetLeft) { - return true; - } - - if (nextProps.arrowOffsetTop !== this.props.arrowOffsetTop) { - return true; - } - - if (nextProps.positionLeft !== this.props.positionLeft) { - return true; - } - - if (nextProps.positionTop !== this.props.positionTop) { - return true; - } - - return false; - } - - handleShowDirectChannel(e) { - e.preventDefault(); - - if (!this.props.user) { - return; - } - - const user = this.props.user; - - if (this.state.loadingDMChannel !== -1) { - return; - } - - this.setState({loadingDMChannel: user.id}); - - openDirectChannelToUser( - user.id, - (channel) => { - if (Utils.isMobile()) { - GlobalActions.emitCloseRightHandSide(); - } - this.setState({loadingDMChannel: -1}); - if (this.props.hide) { - this.props.hide(); - } - browserHistory.push(TeamStore.getCurrentTeamRelativeUrl() + '/channels/' + channel.name); - } - ); - } - - initWebrtc() { - if (this.props.status !== UserStatuses.OFFLINE && !WebrtcStore.isBusy()) { - GlobalActions.emitCloseRightHandSide(); - WebrtcActions.initWebrtc(this.props.user.id, true); - } - } - - generateImage(src) { - return ( - - ); - } - - generateFullname() { - const fullname = Utils.getFullName(this.props.user); - if (fullname) { - return ( - {fullname}} - > -
- {fullname} -
-
- ); - } - - return ''; - } - - generatePosition() { - if (this.props.user.hasOwnProperty('position')) { - const position = this.props.user.position.substring(0, Constants.MAX_POSITION_LENGTH); - return ( - {position}} - > -
- {position} -
-
- ); - } - - return ''; - } - - generateWebrtc() { - const userMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; - const webrtcEnabled = global.mm_config.EnableWebrtc === 'true' && userMedia && Utils.isFeatureEnabled(PreReleaseFeatures.WEBRTC_PREVIEW); - if (webrtcEnabled && this.props.user.id !== this.state.currentUserId) { - const isOnline = this.props.status !== UserStatuses.OFFLINE; - let webrtcMessage; - if (isOnline && !this.props.isBusy) { - webrtcMessage = ( - - ); - } else if (this.props.isBusy) { - webrtcMessage = ( - - ); - } else { - webrtcMessage = ( - - ); - } - - return ( -
- this.initWebrtc()} - disabled={!isOnline} - > - - {webrtcMessage} - -
- ); - } - - return ''; - } - - generateEmail() { - const email = this.props.user.hasOwnProperty('email') ? this.props.user.email : ''; - const showEmail = (global.window.mm_config.ShowEmailAddress === 'true' || UserStore.isSystemAdminForCurrentUser() || this.props.user === UserStore.getCurrentUser()); - - if (email !== '' && showEmail) { - return ( - - ); - } - - return ''; - } - - generateDirectMessage() { - if (this.props.user.id !== UserStore.getCurrentId()) { - return ( - - ); - } - - return ''; - } - - render() { - return ( - - {this.generateImage(this.props.src)} - {this.generateFullname()} - {this.generatePosition()} - {this.generateEmail()} - {this.generateDirectMessage()} - {this.generateWebrtc()} - - ); - } -} - -ProfilePopover.propTypes = Object.assign({ - src: React.PropTypes.string.isRequired, - user: React.PropTypes.object.isRequired, - status: React.PropTypes.string, - isBusy: React.PropTypes.bool, - hide: React.PropTypes.func -}, Popover.propTypes); -delete ProfilePopover.propTypes.id; diff --git a/webapp/components/profile_popover/username_profile_popover.jsx b/webapp/components/profile_popover/username_profile_popover.jsx deleted file mode 100644 index 37993094b..000000000 --- a/webapp/components/profile_popover/username_profile_popover.jsx +++ /dev/null @@ -1,111 +0,0 @@ -// 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
{name}
; - } - - return ( - - } - > -
- {name} -
-
- ); - } -} - -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 -}; -- cgit v1.2.3-1-g7c22