From 141d1b8ece5b506dfed16e9d1c605412a26f0564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Tue, 16 Feb 2016 23:26:06 +0200 Subject: [PATCH] dont update visible:memberCount if group is hidden, closes #4195 --- src/groups/membership.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/groups/membership.js b/src/groups/membership.js index 535e46f358..a9ce84405f 100644 --- a/src/groups/membership.js +++ b/src/groups/membership.js @@ -15,18 +15,27 @@ module.exports = function(Groups) { function join() { var tasks = [ async.apply(db.sortedSetAdd, 'group:' + groupName + ':members', Date.now(), uid), - async.apply(db.incrObjectField, 'group:' + groupName, 'memberCount'), - async.apply(db.sortedSetIncrBy, 'groups:visible:memberCount', 1, groupName) + async.apply(db.incrObjectField, 'group:' + groupName, 'memberCount') ]; async.waterfall([ function(next) { - user.isAdministrator(uid, next); + async.parallel({ + isAdmin: function(next) { + user.isAdministrator(uid, next); + }, + isHidden: function(next) { + Groups.isHidden(groupName, next); + } + }, next); }, - function(isAdmin, next) { - if (isAdmin) { + function(results, next) { + if (results.isAdmin) { tasks.push(async.apply(db.setAdd, 'group:' + groupName + ':owners', uid)); } + if (!results.isHidden) { + tasks.push(async.apply(db.sortedSetIncrBy, 'groups:visible:memberCount', 1, groupName)); + } async.parallel(tasks, next); }, function(results, next) { @@ -181,7 +190,6 @@ module.exports = function(Groups) { var tasks = [ async.apply(db.sortedSetRemove, 'group:' + groupName + ':members', uid), - async.apply(db.sortedSetIncrBy, 'groups:visible:memberCount', -1, groupName), async.apply(db.setRemove, 'group:' + groupName + ':owners', uid), async.apply(db.decrObjectField, 'group:' + groupName, 'memberCount') ]; @@ -204,7 +212,11 @@ module.exports = function(Groups) { if (parseInt(groupData.hidden, 10) === 1 && parseInt(groupData.memberCount, 10) === 0) { Groups.destroy(groupName, callback); } else { - callback(); + if (parseInt(groupData.hidden, 10) !== 1) { + db.sortedSetAdd('groups:visible:memberCount', groupData.memberCount, groupName, next); + } else { + callback(); + } } }); });