try to limit need to refresh after party operations, @lefnire this is only for parties and I got it working only for removeMember and leave party because I could not get join & create working

This commit is contained in:
Matteo Pagliazzi
2013-10-31 17:35:04 +01:00
parent fc10e9d6e6
commit 904677e3a6
3 changed files with 28 additions and 14 deletions
+18 -9
View File
@@ -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':{}}});
+8 -3
View File
@@ -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]);
});
}
+2 -2
View File
@@ -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)')