mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-14 09:55:47 +01:00
added infinite loading to recent page, #141
This commit is contained in:
@@ -116,8 +116,8 @@
|
|||||||
}, function(data) {
|
}, function(data) {
|
||||||
if(data.topics.length) {
|
if(data.topics.length) {
|
||||||
onTopicsLoaded(data.topics);
|
onTopicsLoaded(data.topics);
|
||||||
loadingMoreTopics = false;
|
|
||||||
}
|
}
|
||||||
|
loadingMoreTopics = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
(function() {
|
(function() {
|
||||||
|
var loadingMoreTopics = false;
|
||||||
|
|
||||||
app.enter_room('recent_posts');
|
app.enter_room('recent_posts');
|
||||||
|
|
||||||
ajaxify.register_events([
|
ajaxify.register_events([
|
||||||
@@ -58,7 +60,37 @@
|
|||||||
app.alertError('There was an error marking topics read!');
|
app.alertError('There was an error marking topics read!');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function onTopicsLoaded(topics) {
|
||||||
|
|
||||||
|
var html = templates.prepare(templates['recent'].blocks['topics']).parse({ topics: topics }),
|
||||||
|
container = $('#topics-container');
|
||||||
|
|
||||||
|
$('#category-no-topics').remove();
|
||||||
|
|
||||||
|
container.append(html);
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadMoreTopics() {
|
||||||
|
loadingMoreTopics = true;
|
||||||
|
socket.emit('api:topics.loadMoreRecentTopics', {after:$('#topics-container').children().length}, function(data) {
|
||||||
|
if(data.topics && data.topics.length) {
|
||||||
|
onTopicsLoaded(data.topics);
|
||||||
|
console.log(data.topics);
|
||||||
|
}
|
||||||
|
loadingMoreTopics = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$(window).off('scroll').on('scroll', function() {
|
||||||
|
var windowHeight = document.body.offsetHeight - $(window).height(),
|
||||||
|
half = windowHeight / 2;
|
||||||
|
|
||||||
|
if (document.body.scrollTop > half && !loadingMoreTopics) {
|
||||||
|
loadMoreTopics();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
})();
|
})();
|
||||||
@@ -108,7 +108,7 @@ var user = require('./../user.js'),
|
|||||||
|
|
||||||
app.get('/api/recent', function(req, res) {
|
app.get('/api/recent', function(req, res) {
|
||||||
var uid = (req.user) ? req.user.uid : 0;
|
var uid = (req.user) ? req.user.uid : 0;
|
||||||
topics.getLatestTopics(uid, 0, 9, function(data) {
|
topics.getLatestTopics(uid, 0, 19, function(data) {
|
||||||
res.json(data);
|
res.json(data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -98,7 +98,9 @@ marked.setOptions({
|
|||||||
|
|
||||||
var timestamp = Date.now();
|
var timestamp = Date.now();
|
||||||
|
|
||||||
RDB.zrevrangebyscore([ 'topics:recent', '+inf', timestamp - 86400000], function(err, tids) {
|
var args = [ 'topics:recent', '+inf', timestamp - 86400000, 'WITHSCORES', 'LIMIT', start, end - start + 1];
|
||||||
|
|
||||||
|
RDB.zrevrangebyscore(args, function(err, tids) {
|
||||||
|
|
||||||
var latestTopics = {
|
var latestTopics = {
|
||||||
'category_name' : 'Recent',
|
'category_name' : 'Recent',
|
||||||
|
|||||||
@@ -570,6 +570,15 @@ var SocketIO = require('socket.io').listen(global.server, { log:false }),
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on('api:topics.loadMoreRecentTopics', function(data, callback) {
|
||||||
|
var start = data.after,
|
||||||
|
end = start + 9;
|
||||||
|
|
||||||
|
topics.getLatestTopics(uid, start, end, function(latestTopics) {
|
||||||
|
callback(latestTopics);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('api:admin.topics.getMore', function(data) {
|
socket.on('api:admin.topics.getMore', function(data) {
|
||||||
topics.getAllTopics(data.limit, data.after, function(topics) {
|
topics.getAllTopics(data.limit, data.after, function(topics) {
|
||||||
socket.emit('api:admin.topics.getMore', JSON.stringify(topics));
|
socket.emit('api:admin.topics.getMore', JSON.stringify(topics));
|
||||||
|
|||||||
Reference in New Issue
Block a user