From 74db04f6721437a7143418743fe59ee5cd9164d1 Mon Sep 17 00:00:00 2001 From: enahum Date: Mon, 20 Mar 2017 17:16:56 -0300 Subject: [PATCH] PLT-5912 Make integration posts follow the override username and profile picture config settings (#363) --- app/components/post/post.js | 80 +++++++++++++++++++------- app/components/post/post_container.js | 1 + assets/base/images/icons/webhook.jpg | Bin 0 -> 20565 bytes 3 files changed, 61 insertions(+), 20 deletions(-) create mode 100644 assets/base/images/icons/webhook.jpg diff --git a/app/components/post/post.js b/app/components/post/post.js index 885f18ec8..478fe9dd8 100644 --- a/app/components/post/post.js +++ b/app/components/post/post.js @@ -23,12 +23,17 @@ import ProfilePicture from 'app/components/profile_picture'; import FileAttachmentList from 'app/components/file_attachment_list/file_attachment_list_container'; import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme'; +import webhookIcon from 'assets/images/icons/webhook.jpg'; + import {Constants} from 'mattermost-redux/constants'; import {isSystemMessage} from 'mattermost-redux/utils/post_utils'; import {isAdmin} from 'mattermost-redux/utils/user_utils'; +const BOT_NAME = 'BOT'; + class Post extends PureComponent { static propTypes = { + config: PropTypes.object.isRequired, currentTeamId: PropTypes.string.isRequired, currentUserId: PropTypes.string.isRequired, intl: intlShape.isRequired, @@ -252,17 +257,18 @@ class Post extends PureComponent { }; render() { - const style = getStyleSheet(this.props.theme); + const {config, post, theme} = this.props; + const style = getStyleSheet(theme); const PROFILE_PICTURE_SIZE = 32; let profilePicture; let displayName; let messageStyle; - if (isSystemMessage(this.props.post)) { + if (isSystemMessage(post)) { profilePicture = ( @@ -278,24 +284,43 @@ class Post extends PureComponent { ); messageStyle = [style.message, style.systemMessage]; - } else if (this.props.post.props && this.props.post.props.from_webhook) { - profilePicture = ( - - + + + ); + } else { + profilePicture = ( + - - ); + ); + } + let name = this.props.displayName; + if (post.props.override_username && config.EnablePostUsernameOverride === 'true') { + name = post.props.override_username; + } displayName = ( - - {this.props.post.props.override_username} - + + + {name} + + + {BOT_NAME} + + ); messageStyle = [style.message, style.webhookMessage]; } else { @@ -426,14 +451,29 @@ const getStyleSheet = makeStyleSheetFromTheme((theme) => { marginBottom: 10 }, displayName: { + color: theme.centerChannelColor, fontSize: 14, fontWeight: '600', - marginRight: 10, - color: theme.centerChannelColor + marginRight: 5 + }, + botContainer: { + flexDirection: 'row' + }, + bot: { + alignSelf: 'center', + backgroundColor: changeOpacity(theme.centerChannelColor, 0.15), + borderRadius: 2, + color: theme.centerChannelColor, + fontSize: 10, + fontWeight: '600', + marginRight: 5, + paddingVertical: 2, + paddingHorizontal: 4 }, time: { color: theme.centerChannelColor, fontSize: 12, + marginLeft: 5, opacity: 0.5 }, commentedOn: { diff --git a/app/components/post/post_container.js b/app/components/post/post_container.js index bbefe0a90..4925bf60d 100644 --- a/app/components/post/post_container.js +++ b/app/components/post/post_container.js @@ -21,6 +21,7 @@ function mapStateToProps(state, ownProps) { const myPreferences = getMyPreferences(state); return { + config: state.entities.general.config, commentedOnDisplayName: displayUsername(commentedOnUser, myPreferences), currentTeamId: getCurrentTeamId(state), currentUserId: getCurrentUserId(state), diff --git a/assets/base/images/icons/webhook.jpg b/assets/base/images/icons/webhook.jpg new file mode 100644 index 0000000000000000000000000000000000000000..80f0b1cb6e192d2f95bd2d93c8721bc9ab2dea28 GIT binary patch literal 20565 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 literal 0 HcmV?d00001