diff options
author | Christopher Speller <crspeller@gmail.com> | 2015-12-01 08:50:28 -0500 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2015-12-01 08:50:28 -0500 |
commit | 62c96514bfa243029dba2d9b47b5b8a8322059e4 (patch) | |
tree | 50c09d80374d6ce02675a3fc9c6825030ae2a3c8 | |
parent | 2bfb3493f441d95b67351e03869f8454c4a3a265 (diff) | |
parent | 0b3be654a2d13cd3f74d489c75beec3ada4a6d80 (diff) | |
download | chat-62c96514bfa243029dba2d9b47b5b8a8322059e4.tar.gz chat-62c96514bfa243029dba2d9b47b5b8a8322059e4.tar.bz2 chat-62c96514bfa243029dba2d9b47b5b8a8322059e4.zip |
Merge pull request #1548 from mattermost/plt-1268
PLT-1268 Fix webhook post aggregation and pending/failed post aggregation
-rw-r--r-- | web/react/components/posts_view.jsx | 47 | ||||
-rw-r--r-- | web/react/utils/utils.jsx | 2 |
2 files changed, 40 insertions, 9 deletions
diff --git a/web/react/components/posts_view.jsx b/web/react/components/posts_view.jsx index 9aa1a45b5..6b61d465c 100644 --- a/web/react/components/posts_view.jsx +++ b/web/react/components/posts_view.jsx @@ -94,22 +94,53 @@ export default class PostsView extends React.Component { const prevPostIsComment = Utils.isComment(prevPost); const postFromWebhook = Boolean(post.props && post.props.from_webhook); const prevPostFromWebhook = Boolean(prevPost.props && prevPost.props.from_webhook); + let prevWebhookName = ''; + if (prevPost.props && prevPost.props.override_username) { + prevWebhookName = prevPost.props.override_username; + } + let curWebhookName = ''; + if (post.props && post.props.override_username) { + curWebhookName = post.props.override_username; + } + + // consider posts from the same user if: + // the previous post was made by the same user as the current post, + // the previous post was made within 5 minutes of the current post, + // the previous post and current post are both from webhooks or both not, + // the previous post and current post have the same webhook usernames + if (prevPost.user_id === post.user_id && + post.create_at - prevPost.create_at <= 1000 * 60 * 5 && + postFromWebhook === prevPostFromWebhook && + prevWebhookName === curWebhookName) { + sameUser = true; + } - sameUser = prevPost.user_id === post.user_id && postFromWebhook === prevPostFromWebhook && - post.create_at - prevPost.create_at <= 1000 * 60 * 5; - sameRoot = (postIsComment && (prevPost.id === post.root_id || prevPost.root_id === post.root_id)) || (!postIsComment && !prevPostIsComment && sameUser); + // consider posts from the same root if: + // the current post is a comment, + // the current post has the same root as the previous post + if (postIsComment && (prevPost.id === post.root_id || prevPost.root_id === post.root_id)) { + sameRoot = true; + } + + // consider posts from the same root if: + // the current post is not a comment, + // the previous post is not a comment, + // the previous post is from the same user + if (!postIsComment && !prevPostIsComment && sameUser) { + sameRoot = true; + } // hide the profile pic if: // the previous post was made by the same user as the current post, // the previous post is not a comment, // the current post is not a comment, - // the current post is not from a webhook - // and the previous post is not from a webhook - if ((prevPost.user_id === post.user_id) && + // the previous post and current post are both from webhooks or both not, + // the previous post and current post have the same webhook usernames + if (prevPost.user_id === post.user_id && !prevPostIsComment && !postIsComment && - !postFromWebhook && - !prevPostFromWebhook) { + postFromWebhook === prevPostFromWebhook && + prevWebhookName === curWebhookName) { hideProfilePic = true; } } diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx index 80c377d7f..0c08c2df6 100644 --- a/web/react/utils/utils.jsx +++ b/web/react/utils/utils.jsx @@ -854,7 +854,7 @@ export function isMobile() { export function isComment(post) { if ('root_id' in post) { - return post.root_id !== ''; + return post.root_id !== '' && post.root_id != null; } return false; } |