From cac086ae22c1525f12c1e8d28393b894aa34fd1e Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 09:22:57 -0500 Subject: Fixing the elusive missing post bug --- web/react/stores/post_store.jsx | 17 +---------------- web/react/utils/async_client.jsx | 6 +++--- 2 files changed, 4 insertions(+), 19 deletions(-) (limited to 'web') diff --git a/web/react/stores/post_store.jsx b/web/react/stores/post_store.jsx index b5bb93576..f5c342163 100644 --- a/web/react/stores/post_store.jsx +++ b/web/react/stores/post_store.jsx @@ -83,8 +83,6 @@ class PostStoreClass extends EventEmitter { this.getCommentDraft = this.getCommentDraft.bind(this); this.clearDraftUploads = this.clearDraftUploads.bind(this); this.clearCommentDraftUploads = this.clearCommentDraftUploads.bind(this); - this.storeLatestUpdate = this.storeLatestUpdate.bind(this); - this.getLatestUpdate = this.getLatestUpdate.bind(this); this.getCurrentUsersLatestPost = this.getCurrentUsersLatestPost.bind(this); this.getCommentCount = this.getCommentCount.bind(this); @@ -258,7 +256,7 @@ class PostStoreClass extends EventEmitter { const np = newPosts.posts[pid]; if (np.delete_at === 0) { combinedPosts.posts[pid] = np; - if (combinedPosts.order.indexOf(pid) === -1) { + if (combinedPosts.order.indexOf(pid) === -1 && newPosts.order.indexOf(pid) !== -1) { combinedPosts.order.push(pid); } } @@ -507,19 +505,6 @@ class PostStoreClass extends EventEmitter { } }); } - storeLatestUpdate(channelId, time) { - if (!this.postsInfo.hasOwnProperty(channelId)) { - this.postsInfo[channelId] = {}; - } - this.postsInfo[channelId].latestPost = time; - } - getLatestUpdate(channelId) { - if (this.postsInfo.hasOwnProperty(channelId) && this.postsInfo[channelId].hasOwnProperty('latestPost')) { - return this.postsInfo[channelId].latestPost; - } - - return 0; - } getCommentCount(post) { const posts = this.getAllPosts(post.channel_id).posts; diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index c8676f45d..c2b5fe9e5 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -521,18 +521,18 @@ export function getPosts(id) { return; } - if (PostStore.getAllPosts(channelId) == null) { + if ($.isEmptyObject(PostStore.getAllPosts(channelId))) { getPostsPage(channelId, Constants.POST_CHUNK_SIZE); return; } - const latestUpdate = PostStore.getLatestUpdate(channelId); + const latestPost = PostStore.getLatestPost(channelId); callTracker['getPosts_' + channelId] = utils.getTimestamp(); client.getPosts( channelId, - latestUpdate, + latestPost.update_at, (data, textStatus, xhr) => { if (xhr.status === 304 || !data) { return; -- cgit v1.2.3-1-g7c22 From 2747a99aef5a8c1b6f41222451451c1153cd7079 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 10:52:12 -0500 Subject: Fix case where channel has a postlist but no posts --- web/react/utils/async_client.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'web') diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index c2b5fe9e5..977fa8e7e 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -527,12 +527,17 @@ export function getPosts(id) { } const latestPost = PostStore.getLatestPost(channelId); + let latestPostTime = 0; + + if (latestPost != null && latestPost.update_at != null) { + latestPostTime = latestPost.update_at; + } callTracker['getPosts_' + channelId] = utils.getTimestamp(); client.getPosts( channelId, - latestPost.update_at, + latestPostTime, (data, textStatus, xhr) => { if (xhr.status === 304 || !data) { return; -- cgit v1.2.3-1-g7c22 From c5b2e8832cfa10fd425f493ad3259f0fa547d6b5 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 12:52:01 -0500 Subject: If we have less than CHUNK_SIZE posts, then get the first page --- web/react/utils/async_client.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'web') diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index 977fa8e7e..dc8013a6b 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -521,7 +521,9 @@ export function getPosts(id) { return; } - if ($.isEmptyObject(PostStore.getAllPosts(channelId))) { + const postList = PostStore.getAllPosts(channelId); + + if ($.isEmptyObject(postList) || postList.order.length < Constants.POST_CHUNK_SIZE) { getPostsPage(channelId, Constants.POST_CHUNK_SIZE); return; } -- cgit v1.2.3-1-g7c22 From 3a1ec7dbd76ecad556cca0cee54f574bf813c1fd Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Thu, 11 Feb 2016 13:17:59 -0500 Subject: Switch to using create_at for latest post --- web/react/utils/async_client.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'web') diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx index dc8013a6b..45cdf699f 100644 --- a/web/react/utils/async_client.jsx +++ b/web/react/utils/async_client.jsx @@ -532,7 +532,7 @@ export function getPosts(id) { let latestPostTime = 0; if (latestPost != null && latestPost.update_at != null) { - latestPostTime = latestPost.update_at; + latestPostTime = latestPost.create_at; } callTracker['getPosts_' + channelId] = utils.getTimestamp(); -- cgit v1.2.3-1-g7c22