diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index ceac6eaddf..3e65275d77 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -8,7 +8,8 @@ deleted: templates.get('deleted'), pinned: templates.get('pinned') }, - topic_name = templates.get('topic_name'); + topic_name = templates.get('topic_name'), + infiniteLoaderActive = false; function addCommasToNumbers() { $('.formatted-number').each(function(index, element) { @@ -204,6 +205,20 @@ followEl[0].addEventListener('click', function() { socket.emit('api:topic.follow', tid); }, false); + + // Infinite scrolling of posts + window.addEventListener('scroll', function() { + var windowHeight = document.body.offsetHeight - $(window).height(), + half = windowHeight / 2; + + if (document.body.scrollTop > half && !infiniteLoaderActive) { + infiniteLoaderActive = true; + socket.emit('api:topic.loadMore', { + tid: tid, + after: document.querySelectorAll('#post-container li[data-pid]').length + }); + } + }); }); @@ -304,18 +319,20 @@ socket.on('event:new_post', function(data) { data.posts[0].display_moderator_tools = 'none'; var html = templates.prepare(templates['topic'].blocks['posts']).parse(data), - uniqueid = new Date().getTime(); - - jQuery('
') - .appendTo("#post-container") - .hide() - .append(html) - .fadeIn('slow'); + uniqueid = new Date().getTime(), + tempContainer = jQuery('
') + .appendTo("#post-container") + .hide() + .append(html) + .fadeIn('slow'); for(var x=0,numPosts=data.posts.length;x