From 32f7b50bb5c62d27def3f2e6d2839511c0b8f9a9 Mon Sep 17 00:00:00 2001 From: JoramWilander 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') 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 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 ++++++++++++++++++----------- web/react/utils/constants.jsx | 3 +++ 2 files changed, 21 insertions(+), 11 deletions(-) (limited to 'web/react/utils') 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; } ); } diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx index 1fe0faccf..41b02c8d6 100644 --- a/web/react/utils/constants.jsx +++ b/web/react/utils/constants.jsx @@ -15,6 +15,7 @@ module.exports = { RECIEVED_CHANNEL_EXTRA_INFO: null, RECIEVED_POSTS: null, + RECIEVED_POST: null, RECIEVED_SEARCH: null, RECIEVED_POST_SELECTED: null, RECIEVED_MENTION_DATA: null, @@ -62,6 +63,8 @@ module.exports = { GOOGLE_SERVICE: 'google', POST_CHUNK_SIZE: 60, MAX_POST_CHUNKS: 3, + POST_LOADING: "loading", + POST_FAILED: "failed", RESERVED_TEAM_NAMES: [ "www", "web", -- cgit v1.2.3-1-g7c22