diff --git a/public/src/client/groups/details.js b/public/src/client/groups/details.js index 1d651fad27..f4f56a686e 100644 --- a/public/src/client/groups/details.js +++ b/public/src/client/groups/details.js @@ -64,6 +64,8 @@ define('forum/groups/details', ['iconSelect', 'vendor/colorpicker/colorpicker', case 'leave': case 'accept': case 'reject': + case 'acceptInvite': + case 'rejectInvite': socket.emit('groups.' + action, { toUid: uid, groupName: ajaxify.variables.get('group_name') diff --git a/src/socket.io/groups.js b/src/socket.io/groups.js index ba35e128c4..bb814e6006 100644 --- a/src/socket.io/groups.js +++ b/src/socket.io/groups.js @@ -101,6 +101,34 @@ SocketGroups.reject = function(socket, data, callback) { }); }; +SocketGroups.acceptInvite = function(socket, data, callback) { + if (!data) { + return callback(new Error('[[error:invalid-data]]')); + } + + groups.isInvited(socket.uid, data.groupName, function(err, invited) { + if (!invited) { + return callback(new Error('[[error:no-privileges]]')); + } + + groups.acceptMembership(data.groupName, socket.uid, callback); + }); +}; + +SocketGroups.rejectInvite = function(socket, data, callback) { + if (!data) { + return callback(new Error('[[error:invalid-data]]')); + } + + groups.isInvited(socket.uid, data.groupName, function(err, invited) { + if (!invited) { + return callback(new Error('[[error:no-privileges]]')); + } + + groups.rejectMembership(data.groupName, socket.uid, callback); + }); +}; + SocketGroups.update = function(socket, data, callback) { if (!data) { return callback(new Error('[[error:invalid-data]]'));