diff --git a/src/groups.js b/src/groups.js index bf757de2c3..10bdd46fcc 100644 --- a/src/groups.js +++ b/src/groups.js @@ -379,8 +379,6 @@ var async = require('async'), db.getSortedSetRevRange('groups:visible:createtime', 0, -1, next); }, function(groupNames, next) { - groupNames.push('administrators'); - var groupSets = groupNames.map(function(name) { return 'group:' + name + ':members'; }); diff --git a/src/groups/update.js b/src/groups/update.js index d176167f7a..a54cfe0c49 100644 --- a/src/groups/update.js +++ b/src/groups/update.js @@ -74,7 +74,8 @@ module.exports = function(Groups) { async.parallel([ async.apply(db.sortedSetRemove, 'groups:visible:createtime', groupName), async.apply(db.sortedSetRemove, 'groups:visible:memberCount', groupName), - async.apply(db.sortedSetRemove, 'groups:visible:name', groupName.toLowerCase() + ':' + groupName) + async.apply(db.sortedSetRemove, 'groups:visible:name', groupName.toLowerCase() + ':' + groupName), + async.apply(db.deleteObjectField, 'groupslug:groupname', utils.slugify(groupName)) ], callback); } else { db.getObjectFields('group:' + groupName, ['createtime', 'memberCount'], function(err, groupData) { @@ -84,7 +85,8 @@ module.exports = function(Groups) { async.parallel([ async.apply(db.sortedSetAdd, 'groups:visible:createtime', groupData.createtime, groupName), async.apply(db.sortedSetAdd, 'groups:visible:memberCount', groupData.memberCount, groupName), - async.apply(db.sortedSetAdd, 'groups:visible:name', 0, groupName.toLowerCase() + ':' + groupName) + async.apply(db.sortedSetAdd, 'groups:visible:name', 0, groupName.toLowerCase() + ':' + groupName), + async.apply(db.setObjectField, 'groupslug:groupname', utils.slugify(groupName), groupName) ], callback); }); } @@ -92,7 +94,22 @@ module.exports = function(Groups) { Groups.hide = function(groupName, callback) { callback = callback || function() {}; - db.setObjectField('group:' + groupName, 'hidden', 1, callback); + async.parallel([ + async.apply(db.setObjectField, 'group:' + groupName, 'hidden', 1), + async.apply(updateVisibility, groupName, true) + ], function(err, results) { + callback(err); + }); + }; + + Groups.show = function(groupName, callback) { + callback = callback || function() {}; + async.parallel([ + async.apply(db.setObjectField, 'group:' + groupName, 'hidden', 0), + async.apply(updateVisibility, groupName, false) + ], function(err, results) { + callback(err); + }); }; Groups.updateCoverPosition = function(groupName, position, callback) { diff --git a/src/install.js b/src/install.js index 9aafa5d598..3438d74112 100644 --- a/src/install.js +++ b/src/install.js @@ -348,15 +348,21 @@ function createAdmin(callback) { return retryPassword(results); } - User.create({username: results.username, password: results.password, email: results.email}, function (err, uid) { + async.waterfall([ + function(next) { + User.create({username: results.username, password: results.password, email: results.email}, next); + }, + function(uid, next) { + Groups.join('administrators', uid, next); + }, + function(next) { + Groups.show('administrators', next); + } + ], function(err) { if (err) { - winston.warn(err.message + ' Please try again.'); - return callback(new Error('invalid-values')); + return callback(err); } - - Groups.join('administrators', uid, function(err) { - callback(err, password ? results : undefined); - }); + callback(null, password ? results : undefined); }); }, retryPassword = function (originalResults) {