From 32f7b50bb5c62d27def3f2e6d2839511c0b8f9a9 Mon Sep 17 00:00:00 2001
From: JoramWilander <jwawilander@gmail.com>
Date: Thu, 23 Jul 2015 09:39:29 -0400
Subject: adds predictive posting on the client

---
 web/react/utils/async_client.jsx | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'web/react/utils/async_client.jsx')

diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx
index 8b6d821d6..8fa022cbc 100644
--- a/web/react/utils/async_client.jsx
+++ b/web/react/utils/async_client.jsx
@@ -377,6 +377,8 @@ module.exports.getPosts = function(force, id, maxPosts) {
                         post_list: data
                     });
 
+                    PostStore.removeNonFailedPendingPosts(channelId);
+
                     module.exports.getProfiles();
                 },
                 function(err) {
-- 
cgit v1.2.3-1-g7c22


From fa1491bbfbb1261757943759edf44883d31e5477 Mon Sep 17 00:00:00 2001
From: JoramWilander <jwawilander@gmail.com>
Date: Wed, 12 Aug 2015 12:45:15 -0400
Subject: finalize implenetation of predictive client posts so that users get
 immediate feedback after posting

---
 web/react/utils/async_client.jsx | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

(limited to 'web/react/utils/async_client.jsx')

diff --git a/web/react/utils/async_client.jsx b/web/react/utils/async_client.jsx
index 8fa022cbc..349fe9021 100644
--- a/web/react/utils/async_client.jsx
+++ b/web/react/utils/async_client.jsx
@@ -346,24 +346,33 @@ module.exports.search = function(terms) {
 
 module.exports.getPosts = function(force, id, maxPosts) {
     if (PostStore.getCurrentPosts() == null || force) {
-        var channelId = id ? id : ChannelStore.getCurrentId();
+        var channelId = id;
+        if (channelId == null) {
+            channelId = ChannelStore.getCurrentId();
+        }
 
-        if (isCallInProgress('getPosts_'+channelId)) return;
+        if (isCallInProgress('getPosts_' + channelId)) {
+            return;
+        }
 
-        var post_list = PostStore.getCurrentPosts();
+        var postList = PostStore.getCurrentPosts();
 
-        if (!maxPosts) { maxPosts = Constants.POST_CHUNK_SIZE * Constants.MAX_POST_CHUNKS };
+        var max = maxPosts;
+        if (max == null) {
+            max = Constants.POST_CHUNK_SIZE * Constants.MAX_POST_CHUNKS;
+        }
 
         // if we already have more than POST_CHUNK_SIZE posts,
         //   let's get the amount we have but rounded up to next multiple of POST_CHUNK_SIZE,
         //   with a max at maxPosts
-        var numPosts = Math.min(maxPosts, Constants.POST_CHUNK_SIZE);
-        if (post_list && post_list.order.length > 0) {
-            numPosts = Math.min(maxPosts, Constants.POST_CHUNK_SIZE * Math.ceil(post_list.order.length / Constants.POST_CHUNK_SIZE));
+        var numPosts = Math.min(max, Constants.POST_CHUNK_SIZE);
+        if (postList && postList.order.length > 0) {
+            numPosts = Math.min(max, Constants.POST_CHUNK_SIZE * Math.ceil(postList.order.length / Constants.POST_CHUNK_SIZE));
         }
 
         if (channelId != null) {
-            callTracker['getPosts_'+channelId] = utils.getTimestamp();
+            callTracker['getPosts_' + channelId] = utils.getTimestamp();
+
             client.getPosts(
                 channelId,
                 0,
@@ -377,15 +386,13 @@ module.exports.getPosts = function(force, id, maxPosts) {
                         post_list: data
                     });
 
-                    PostStore.removeNonFailedPendingPosts(channelId);
-
                     module.exports.getProfiles();
                 },
                 function(err) {
                     dispatchError(err, 'getPosts');
                 },
                 function() {
-                    callTracker['getPosts_'+channelId] = 0;
+                    callTracker['getPosts_' + channelId] = 0;
                 }
             );
         }
-- 
cgit v1.2.3-1-g7c22

