diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index e9c4b7ade8..2c010930e3 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -48,12 +48,15 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A } } - $scope.removeMember = function(group, member){ + $scope.removeMember = function(group, member, isMember){ var yes = confirm("Do you really want to remove this member from the party?") if(yes){ - group.$removeMember({uuid: member._id}, function(){ - location.reload(); - }); + group.$removeMember({uuid: member._id}); + if(isMember){ + group.members = _.without(group.members, member); + }else{ + group.invites = _.without(group.invites, member); + } } } @@ -62,7 +65,6 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A $scope.invite = function(group){ group.$invite({uuid:group.invitee}, function(){ group.invitee = ''; - alert("User invited to group"); }, function(){ group.invitee = ''; }); @@ -184,7 +186,10 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A $scope.group = Groups.groups.party; $scope.newGroup = new Groups.Group({type:'party', leader: User.user._id, members: [User.user._id]}); $scope.create = function(group){ - group.$save(function(){ + group.$save(function(newGroup){ + // Can't get this to work, group is correctly returned, scope updated but not view.... + //Groups.groups.party = newGroup; + //$scope.group = Groups.groups.party; location.reload(); }); } @@ -192,19 +197,23 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A $scope.join = function(party){ var group = new Groups.Group({_id: party.id, name: party.name}); // there a better way to access GroupsCtrl.groups.party? - group.$join(function(){ + group.$join(function(groupJoined){ + // Can't get this to work, group is correctly returned, scope updated but not view.... + //Groups.groups.party = groupJoined; + //$scope.group = Groups.groups.party; location.reload(); }); } + $scope.leave = function(group){ if (confirm("Are you sure you want to leave this party?") !== true) { return; } group.$leave(function(){ - //Groups.groups.party = new Groups.Group(); - location.reload(); + Groups.groups.party = undefined; }); } + $scope.reject = function(){ User.user.invitations.party = undefined; User.log({op:'set',data:{'invitations.party':{}}}); diff --git a/src/controllers/groups.js b/src/controllers/groups.js index ba8abadf14..ae1e85f0f4 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -245,8 +245,11 @@ api.join = function(req, res, next) { user.save(); } - group.members.push(user._id); - group.invites.splice(_.indexOf(group.invites, user._id), 1); + if (!_.contains(group.members,uuid)) + group.members.push(user._id); + group.invites.splice(_.indexOf(group.invites, user._id), 1); + } + async.series([ function(cb){ group.save(cb); @@ -257,6 +260,7 @@ api.join = function(req, res, next) { ], function(err, results){ if (err) return res.json(500,{err:err}); + // Return the group? Or not? res.json(results[1]); }); } @@ -267,7 +271,7 @@ api.leave = function(req, res, next) { Group.update({_id:group._id},{$pull:{members:user._id}}, function(err, saved){ if (err) return res.json(500,{err:err}); - return res.send(200, {_id: saved._id}); + return res.send(204); }); } @@ -320,6 +324,7 @@ api.invite = function(req, res, next) { ], function(err, results){ if (err) return res.json(500,{err:err}); + // Have to return whole group and its members for angular to show the invited user res.json(results[2]); }); } diff --git a/views/options/groups/group.jade b/views/options/groups/group.jade index e777686aad..a9bfd58ff5 100644 --- a/views/options/groups/group.jade +++ b/views/options/groups/group.jade @@ -57,7 +57,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' td // allow leaders to ban members div(ng-show='group.leader == user.id && user.id!=member._id') - a(ng-click='removeMember(group, member)') + a(ng-click='removeMember(group, member, true)') i.icon-ban-circle(tooltip='Boot Member') a span(ng-class='{"badge badge-info": group.leader==member._id}', ng-click='clickMember(member._id, true)') @@ -69,7 +69,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank' td // allow leaders to ban members div(ng-show='group.leader == user.id') - a(ng-click='removeMember(group, invite)') + a(ng-click='removeMember(group, invite, false)') i.icon-ban-circle(tooltip='Boot Member') a span(ng-click='clickMember(invite._id, true)')