mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-04 11:31:23 +01:00
remove dupe code
This commit is contained in:
@@ -26,6 +26,10 @@ module.exports = function (User) {
|
||||
};
|
||||
|
||||
User.getUsersFields = function (uids, fields, callback) {
|
||||
if (!Array.isArray(uids) || !uids.length) {
|
||||
return callback(null, []);
|
||||
}
|
||||
|
||||
var fieldsToRemove = [];
|
||||
function addField(field) {
|
||||
if (fields.indexOf(field) === -1) {
|
||||
@@ -34,23 +38,6 @@ module.exports = function (User) {
|
||||
}
|
||||
}
|
||||
|
||||
// Eliminate duplicates and build ref table
|
||||
var uniqueUids = uids.filter(function (uid, index) {
|
||||
return index === uids.indexOf(uid);
|
||||
});
|
||||
var ref = uniqueUids.reduce(function (memo, cur, idx) {
|
||||
memo[cur] = idx;
|
||||
return memo;
|
||||
}, {});
|
||||
|
||||
if (!Array.isArray(uniqueUids) || !uniqueUids.length) {
|
||||
return callback(null, []);
|
||||
}
|
||||
|
||||
var keys = uniqueUids.map(function (uid) {
|
||||
return 'user:' + uid;
|
||||
});
|
||||
|
||||
if (fields.indexOf('uid') === -1) {
|
||||
fields.push('uid');
|
||||
}
|
||||
@@ -64,21 +51,17 @@ module.exports = function (User) {
|
||||
addField('lastonline');
|
||||
}
|
||||
|
||||
var uniqueUids = uids.filter(function (uid, index) {
|
||||
return index === uids.indexOf(uid);
|
||||
});
|
||||
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
db.getObjectsFields(keys, fields, function (err, users) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
users = uids.map(function (uid) {
|
||||
return users[ref[uid]];
|
||||
});
|
||||
|
||||
next(null, users);
|
||||
});
|
||||
db.getObjectsFields(uidsToUserKeys(uniqueUids), fields, next);
|
||||
},
|
||||
function (users, next) {
|
||||
users = uidsToUsers(uids, uniqueUids, users);
|
||||
|
||||
modifyUserData(users, fieldsToRemove, next);
|
||||
},
|
||||
], callback);
|
||||
@@ -100,39 +83,39 @@ module.exports = function (User) {
|
||||
return callback(null, []);
|
||||
}
|
||||
|
||||
// Eliminate duplicates and build ref table
|
||||
var uniqueUids = uids.filter(function (uid, index) {
|
||||
return index === uids.indexOf(uid);
|
||||
});
|
||||
var ref = uniqueUids.reduce(function (memo, cur, idx) {
|
||||
memo[cur] = idx;
|
||||
return memo;
|
||||
}, {});
|
||||
|
||||
var keys = uniqueUids.map(function (uid) {
|
||||
return 'user:' + uid;
|
||||
});
|
||||
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
db.getObjects(keys, function (err, users) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
users = uids.map(function (uid) {
|
||||
return users[ref[uid]];
|
||||
});
|
||||
|
||||
next(null, users);
|
||||
});
|
||||
db.getObjects(uidsToUserKeys(uniqueUids), next);
|
||||
},
|
||||
function (users, next) {
|
||||
users = uidsToUsers(uids, uniqueUids, users);
|
||||
|
||||
modifyUserData(users, [], next);
|
||||
},
|
||||
], callback);
|
||||
};
|
||||
|
||||
function uidsToUsers(uids, uniqueUids, usersData) {
|
||||
var ref = uniqueUids.reduce(function (memo, cur, idx) {
|
||||
memo[cur] = idx;
|
||||
return memo;
|
||||
}, {});
|
||||
var users = uids.map(function (uid) {
|
||||
return usersData[ref[uid]];
|
||||
});
|
||||
return users;
|
||||
}
|
||||
|
||||
function uidsToUserKeys(uids) {
|
||||
return uids.map(function (uid) {
|
||||
return 'user:' + uid;
|
||||
});
|
||||
}
|
||||
|
||||
function modifyUserData(users, fieldsToRemove, callback) {
|
||||
users.forEach(function (user) {
|
||||
if (!user) {
|
||||
|
||||
Reference in New Issue
Block a user