From 6fd772756cd247f60e8de89e43e15e153fc5f0e1 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Fri, 19 Jun 2015 17:37:14 -0400 Subject: [PATCH] on user delete leaveAllGroups and remove from pending invited sets as well --- src/groups/membership.js | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/src/groups/membership.js b/src/groups/membership.js index 6dbcbdb653..0e2a131bd3 100644 --- a/src/groups/membership.js +++ b/src/groups/membership.js @@ -163,20 +163,29 @@ module.exports = function(Groups) { }; Groups.leaveAllGroups = function(uid, callback) { - db.getSortedSetRange('groups:createtime', 0, -1, function(err, groups) { - if (err) { - return callback(err); + async.waterfall([ + function(next) { + db.getSortedSetRange('groups:createtime', 0, -1, next); + }, + function(groups, next) { + async.each(groups, function(groupName, next) { + async.parallel([ + function(next) { + Groups.isMember(uid, groupName, function(err, isMember) { + if (!err && isMember) { + Groups.leave(groupName, uid, next); + } else { + next(); + } + }); + }, + function(next) { + Groups.rejectMembership(groupName, uid, next); + } + ], next); + }, next); } - async.each(groups, function(groupName, next) { - Groups.isMember(uid, groupName, function(err, isMember) { - if (!err && isMember) { - Groups.leave(groupName, uid, next); - } else { - next(); - } - }); - }, callback); - }); + ], callback); }; Groups.getMembers = function(groupName, start, stop, callback) {