From 845229d9836412c2592fdcd9da0e7b1b9fc76a15 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Wed, 23 Sep 2015 12:25:01 -0400 Subject: [PATCH] Fix post not rendering properly in some cases. --- web/react/components/post.jsx | 51 ++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/web/react/components/post.jsx b/web/react/components/post.jsx index d3c6befd09..9127f00de1 100644 --- a/web/react/components/post.jsx +++ b/web/react/components/post.jsx @@ -51,7 +51,7 @@ export default class Post extends React.Component { var post = this.props.post; client.createPost(post, post.channel_id, - function success(data) { + (data) => { AsyncClient.getPosts(); var channel = ChannelStore.get(post.channel_id); @@ -65,11 +65,11 @@ export default class Post extends React.Component { post: data }); }, - function error() { + () => { post.state = Constants.POST_FAILED; PostStore.updatePendingPost(post); this.forceUpdate(); - }.bind(this) + } ); post.state = Constants.POST_LOADING; @@ -81,8 +81,40 @@ export default class Post extends React.Component { return true; } + if (nextProps.sameRoot !== this.props.sameRoot) { + return true; + } + + if (nextProps.sameUser !== this.props.sameUser) { + return true; + } + + if (this.getCommentCount(nextProps) !== this.getCommentCount(this.props)) { + return true; + } + return false; } + getCommentCount(props) { + const post = props.post; + const parentPost = props.parentPost; + const posts = props.posts; + + let commentCount = 0; + let commentRootId; + if (parentPost) { + commentRootId = post.root_id; + } else { + commentRootId = post.id; + } + for (let postId in posts) { + if (posts[postId].root_id === commentRootId) { + commentCount += 1; + } + } + + return commentCount; + } render() { var post = this.props.post; var parentPost = this.props.parentPost; @@ -93,18 +125,7 @@ export default class Post extends React.Component { type = 'Comment'; } - var commentCount = 0; - var commentRootId; - if (parentPost) { - commentRootId = post.root_id; - } else { - commentRootId = post.id; - } - for (var postId in posts) { - if (posts[postId].root_id === commentRootId) { - commentCount += 1; - } - } + const commentCount = this.getCommentCount(this.props); var rootUser; if (this.props.sameRoot) {