fix user search pagination

v1.18.x
barisusakli 10 years ago
parent d12ccfacb5
commit 124b79f6aa

@ -5,6 +5,7 @@ var async = require('async');
var db = require('../../database'); var db = require('../../database');
var user = require('../../user'); var user = require('../../user');
var meta = require('../../meta'); var meta = require('../../meta');
var pagination = require('../../pagination');
module.exports = function(SocketUser) { module.exports = function(SocketUser) {
SocketUser.search = function(socket, data, callback) { SocketUser.search = function(socket, data, callback) {
@ -21,7 +22,13 @@ module.exports = function(SocketUser) {
sortBy: data.sortBy, sortBy: data.sortBy,
onlineOnly: data.onlineOnly, onlineOnly: data.onlineOnly,
uid: socket.uid uid: socket.uid
}, callback); }, function(err, result) {
if (err) {
return callback(err);
}
result.pagination = pagination.create(data.page, result.pageCount);
callback(null, result);
});
}; };
SocketUser.loadSearchPage = function(socket, data, callback) { SocketUser.loadSearchPage = function(socket, data, callback) {

@ -3,7 +3,6 @@
var async = require('async'), var async = require('async'),
meta = require('../meta'), meta = require('../meta'),
pagination = require('../pagination'),
plugins = require('../plugins'), plugins = require('../plugins'),
db = require('../database'); db = require('../database');
@ -42,9 +41,11 @@ module.exports = function(User) {
searchResult.matchCount = uids.length; searchResult.matchCount = uids.length;
if (paginate) { if (paginate) {
var pagination = User.paginate(page, uids); var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20;
uids = pagination.data; var start = Math.max(0, page - 1) * resultsPerPage;
searchResult.pagination = pagination.pagination; var stop = start + resultsPerPage;
searchResult.pageCount = Math.ceil(uids.length / resultsPerPage);
uids = uids.slice(start, stop);
} }
User.getUsers(uids, uid, next); User.getUsers(uids, uid, next);
@ -57,21 +58,6 @@ module.exports = function(User) {
], callback); ], callback);
}; };
User.paginate = function(page, data) {
var resultsPerPage = parseInt(meta.config.userSearchResultsPerPage, 10) || 20;
var start = Math.max(0, page - 1) * resultsPerPage;
var stop = start + resultsPerPage;
var pageCount = Math.ceil(data.length / resultsPerPage);
var currentPage = Math.max(1, Math.ceil((start + 1) / resultsPerPage));
return {
pagination: pagination.create(currentPage, pageCount),
pageCount: pageCount,
data: data.slice(start, stop)
};
};
function findUids(query, searchBy, callback) { function findUids(query, searchBy, callback) {
if (!query) { if (!query) {
return callback(null, []); return callback(null, []);

Loading…
Cancel
Save