From 489151d2d2ab821b51637a67c53b41246dfcd9b4 Mon Sep 17 00:00:00 2001 From: Saturnino Abril Date: Wed, 26 Jul 2017 07:45:55 +0800 Subject: [PLT-1031] Update clicking on @mention to show the contact card (#6989) * update clicking on @mention to show the contact card * update per comment - getUserFromMentionName and suffix --- webapp/components/at_mention/at_mention.jsx | 59 +++++++++++++++++------------ webapp/components/at_mention/index.jsx | 12 +----- 2 files changed, 35 insertions(+), 36 deletions(-) diff --git a/webapp/components/at_mention/at_mention.jsx b/webapp/components/at_mention/at_mention.jsx index 760884b88..3e2c7bdbc 100644 --- a/webapp/components/at_mention/at_mention.jsx +++ b/webapp/components/at_mention/at_mention.jsx @@ -1,40 +1,48 @@ // Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. // See License.txt for license information. +import ProfilePopover from 'components/profile_popover.jsx'; +import {Client4} from 'mattermost-redux/client'; + import React from 'react'; import PropTypes from 'prop-types'; +import {OverlayTrigger} from 'react-bootstrap'; export default class AtMention extends React.PureComponent { static propTypes = { mentionName: PropTypes.string.isRequired, - usersByUsername: PropTypes.object.isRequired, - actions: PropTypes.shape({ - searchForTerm: PropTypes.func.isRequired - }).isRequired + usersByUsername: PropTypes.object.isRequired }; constructor(props) { super(props); + this.hideProfilePopover = this.hideProfilePopover.bind(this); + this.state = { - username: this.getUsernameFromMentionName(props) + user: this.getUserFromMentionName(props) }; } componentWillReceiveProps(nextProps) { if (nextProps.mentionName !== this.props.mentionName || nextProps.usersByUsername !== this.props.usersByUsername) { this.setState({ - username: this.getUsernameFromMentionName(nextProps) + user: this.getUserFromMentionName(nextProps) }); } } - getUsernameFromMentionName(props) { + hideProfilePopover() { + this.refs.overlay.hide(); + } + + getUserFromMentionName(props) { + const usersByUsername = props.usersByUsername; let mentionName = props.mentionName; while (mentionName.length > 0) { - if (props.usersByUsername[mentionName]) { - return props.usersByUsername[mentionName].username; + if (usersByUsername[mentionName]) { + return usersByUsername[mentionName]; } // Repeatedly trim off trailing punctuation in case this is at the end of a sentence @@ -48,30 +56,31 @@ export default class AtMention extends React.PureComponent { return ''; } - search = (e) => { - e.preventDefault(); - - this.props.actions.searchForTerm(this.state.username); - } - render() { - const username = this.state.username; - - if (!username) { + if (!this.state.user) { return {'@' + this.props.mentionName}; } - const suffix = this.props.mentionName.substring(username.length); + const user = this.state.user; + const suffix = this.props.mentionName.substring(user.username.length); return ( - + } > - {'@' + username} - + {'@' + user.username} + {suffix} ); diff --git a/webapp/components/at_mention/index.jsx b/webapp/components/at_mention/index.jsx index c733158c6..37c886bbd 100644 --- a/webapp/components/at_mention/index.jsx +++ b/webapp/components/at_mention/index.jsx @@ -5,8 +5,6 @@ import {connect} from 'react-redux'; import {getUsersByUsername} from 'mattermost-redux/selectors/entities/users'; -import {searchForTerm} from 'actions/post_actions.jsx'; - import AtMention from './at_mention.jsx'; function mapStateToProps(state, ownProps) { @@ -16,12 +14,4 @@ function mapStateToProps(state, ownProps) { }; } -function mapDispatchToProps() { - return { - actions: { - searchForTerm - } - }; -} - -export default connect(mapStateToProps, mapDispatchToProps)(AtMention); +export default connect(mapStateToProps)(AtMention); -- cgit v1.2.3-1-g7c22