diff --git a/app/components/at_mention/__snapshots__/at_mention.test.js.snap b/app/components/at_mention/__snapshots__/at_mention.test.js.snap
new file mode 100644
index 0000000000..0ce3a4bdb1
--- /dev/null
+++ b/app/components/at_mention/__snapshots__/at_mention.test.js.snap
@@ -0,0 +1,39 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`AtMention should match snapshot, no highlight 1`] = `
+
+ @John.Smith
+
+`;
+
+exports[`AtMention should match snapshot, with highlight 1`] = `
+
+
+ @John.Smith
+
+
+
+`;
+
+exports[`AtMention should match snapshot, without highlight 1`] = `
+
+
+ @Victor.Welch
+
+
+
+`;
diff --git a/app/components/at_mention/at_mention.js b/app/components/at_mention/at_mention.js
index d6a9850486..3dd96eb1ee 100644
--- a/app/components/at_mention/at_mention.js
+++ b/app/components/at_mention/at_mention.js
@@ -16,6 +16,7 @@ import {goToScreen} from 'app/actions/navigation';
export default class AtMention extends React.PureComponent {
static propTypes = {
isSearchResult: PropTypes.bool,
+ mentionKeys: PropTypes.array.isRequired,
mentionName: PropTypes.string.isRequired,
mentionStyle: CustomPropTypes.Style,
onPostPress: PropTypes.func,
@@ -111,7 +112,7 @@ export default class AtMention extends React.PureComponent {
};
render() {
- const {isSearchResult, mentionName, mentionStyle, onPostPress, teammateNameDisplay, textStyle} = this.props;
+ const {isSearchResult, mentionName, mentionStyle, onPostPress, teammateNameDisplay, textStyle, mentionKeys} = this.props;
const {user} = this.state;
if (!user.username) {
@@ -119,6 +120,7 @@ export default class AtMention extends React.PureComponent {
}
const suffix = this.props.mentionName.substring(user.username.length);
+ const highlighted = mentionKeys.some((item) => item.key === user.username);
return (
-
+
{'@' + displayUsername(user, teammateNameDisplay)}
{suffix}
diff --git a/app/components/at_mention/at_mention.test.js b/app/components/at_mention/at_mention.test.js
new file mode 100644
index 0000000000..0ba1bb4fc3
--- /dev/null
+++ b/app/components/at_mention/at_mention.test.js
@@ -0,0 +1,43 @@
+// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
+// See LICENSE.txt for license information.
+
+import React from 'react';
+import {shallow} from 'enzyme';
+import AtMention from './at_mention.js';
+
+describe('AtMention', () => {
+ const baseProps = {
+ usersByUsername: {},
+ mentionKeys: [{key: 'John.Smith'}, {key: 'Jane.Doe'}],
+ teammateNameDisplay: '',
+ mentionName: 'John.Smith',
+ mentionStyle: {color: '#ff0000'},
+ theme: {},
+ };
+
+ test('should match snapshot, no highlight', () => {
+ const wrapper = shallow(
+
+ );
+
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+
+ test('should match snapshot, with highlight', () => {
+ const wrapper = shallow(
+
+ );
+
+ wrapper.setState({user: {username: 'John.Smith'}});
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+
+ test('should match snapshot, without highlight', () => {
+ const wrapper = shallow(
+
+ );
+
+ wrapper.setState({user: {username: 'Victor.Welch'}});
+ expect(wrapper.getElement()).toMatchSnapshot();
+ });
+});
\ No newline at end of file
diff --git a/app/components/at_mention/index.js b/app/components/at_mention/index.js
index 07ac8c7334..93345614d0 100644
--- a/app/components/at_mention/index.js
+++ b/app/components/at_mention/index.js
@@ -3,7 +3,7 @@
import {connect} from 'react-redux';
-import {getUsersByUsername} from 'mattermost-redux/selectors/entities/users';
+import {getUsersByUsername, getCurrentUserMentionKeys} from 'mattermost-redux/selectors/entities/users';
import {getTeammateNameDisplaySetting, getTheme} from 'mattermost-redux/selectors/entities/preferences';
@@ -13,6 +13,7 @@ function mapStateToProps(state) {
return {
theme: getTheme(state),
usersByUsername: getUsersByUsername(state),
+ mentionKeys: getCurrentUserMentionKeys(state),
teammateNameDisplay: getTeammateNameDisplaySetting(state),
};
}