From 962955f06a1df02de04cd8f0c04ccf8734831465 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 17 Jan 2014 14:29:46 -0500 Subject: [PATCH 1/4] fixed bug with search (getTopicsByTids became error-first) --- src/routes/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/api.js b/src/routes/api.js index 700949d6e5..90f7222c6c 100644 --- a/src/routes/api.js +++ b/src/routes/api.js @@ -294,7 +294,7 @@ var path = require('path'), return callback(err, null); } - topics.getTopicsByTids(tids, 0, 0, function (topics) { + topics.getTopicsByTids(tids, 0, 0, function (err, topics) { callback(null, topics); }); }); From d8c4609ee027ca51cdf0306c6647c95884125c6f Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 17 Jan 2014 14:47:18 -0500 Subject: [PATCH 2/4] fixed #649 - Once you hit the end, infinite loader will stop for good. If infinite loader is active when the browser hits the bottom, updateHeader will not assume 100%. --- public/src/forum/topic.js | 48 +++++++++++++++++++++------------------ src/socket.io/topics.js | 4 +++- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 74b3c3e6af..57a46b0603 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -957,7 +957,8 @@ define(['composer'], function(composer) { }); setTimeout(function() { - if (scrollTop + windowHeight == jQuery(document).height()) { + console.log(infiniteLoaderActive); + if (scrollTop + windowHeight == jQuery(document).height() && !infiniteLoaderActive) { pagination.innerHTML = Topic.postCount + ' out of ' + Topic.postCount; progressBar.width('100%'); } @@ -1099,32 +1100,35 @@ define(['composer'], function(composer) { return; } - infiniteLoaderActive = true; if (indicatorEl.attr('done') === '0') { + infiniteLoaderActive = true; indicatorEl.fadeIn(); - } - socket.emit('topics.loadMore', { - tid: tid, - after: parseInt($('#post-container .post-row.infiniteloaded').last().attr('data-index'), 10) + 1 - }, function (err, data) { - if(err) { - return app.alertError(err.message); - } + socket.emit('topics.loadMore', { + tid: tid, + after: parseInt($('#post-container .post-row.infiniteloaded').last().attr('data-index'), 10) + 1 + }, function (err, data) { + if(err) { + return app.alertError(err.message); + } - infiniteLoaderActive = false; - if (data && data.posts && data.posts.length) { - indicatorEl.attr('done', '0'); - createNewPosts(data, true); - } else { - indicatorEl.attr('done', '1'); - } - indicatorEl.fadeOut(); - if (callback) { - callback(data.posts); - } - }); + infiniteLoaderActive = false; + if (data && data.posts && data.posts.length) { + indicatorEl.attr('done', '0'); + createNewPosts(data, true); + } else { + indicatorEl.attr('done', '1'); + updateHeader(); + } + + indicatorEl.fadeOut(); + + if (callback) { + callback(data.posts); + } + }); + } } return Topic; diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index d79bb1b8a6..5e71ee0022 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -204,7 +204,9 @@ SocketTopics.loadMore = function(socket, data, callback) { end = start + 9; topics.getTopicPosts(data.tid, start, end, socket.uid, function(err, posts) { - callback(err, {posts: posts}); + setTimeout(function() { + callback(err, {posts: posts}); + }, 2500); }); }; From 917dfe74e6eb0e6e59aff0dec531a6c837b33b3d Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 17 Jan 2014 14:52:43 -0500 Subject: [PATCH 3/4] removing console log and removing a bit of code that would cause infinite loader to take 2.5s extra each round :P --- public/src/forum/topic.js | 1 - src/socket.io/topics.js | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 57a46b0603..99e47aaebe 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -957,7 +957,6 @@ define(['composer'], function(composer) { }); setTimeout(function() { - console.log(infiniteLoaderActive); if (scrollTop + windowHeight == jQuery(document).height() && !infiniteLoaderActive) { pagination.innerHTML = Topic.postCount + ' out of ' + Topic.postCount; progressBar.width('100%'); diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index 5e71ee0022..d79bb1b8a6 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -204,9 +204,7 @@ SocketTopics.loadMore = function(socket, data, callback) { end = start + 9; topics.getTopicPosts(data.tid, start, end, socket.uid, function(err, posts) { - setTimeout(function() { - callback(err, {posts: posts}); - }, 2500); + callback(err, {posts: posts}); }); }; From 123f92ca1e5c4fcd5b2ddf1fac960d82c23318f9 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Fri, 17 Jan 2014 15:36:10 -0500 Subject: [PATCH 4/4] fixed #711 --- public/src/forum/topic.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 99e47aaebe..454dd9b68f 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -321,6 +321,17 @@ define(['composer'], function(composer) { $('#post-container').on('click', '.deleted', function(ev) { $(this).toggleClass('deleted-expanded'); }); + + // Show the paginator block, now that the DOM has finished loading + (function delayedHeaderUpdate() { + if (!Topic.postCount) { + setTimeout(function() { + delayedHeaderUpdate(); + }, 25); + } else { + updateHeader(); + } + })(); }); function enableInfiniteLoading() { @@ -893,7 +904,6 @@ define(['composer'], function(composer) { Topic.postCount = templates.get('postcount'); window.onscroll = updateHeader; - window.onload = updateHeader; }; function updateHeader() {