From 2f8c9fea782fb6389837c388e2b045db2623c5c7 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 11 Sep 2013 17:16:23 -0400 Subject: [PATCH] [#1516] fixes to handling user.invitations.guilds - both accept & reject --- public/js/controllers/groupsCtrl.js | 7 +++++++ src/controllers/groups.js | 3 +-- src/models/user.js | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/public/js/controllers/groupsCtrl.js b/public/js/controllers/groupsCtrl.js index 1503279908..b5b38d9fa5 100644 --- a/public/js/controllers/groupsCtrl.js +++ b/public/js/controllers/groupsCtrl.js @@ -128,6 +128,13 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A } $scope.join = function(group){ + // If we're accepting an invitation, we don't have the actual group object, but a faux group object (for performance + // purposes) {id, name}. Let's trick ngResource into thinking we have a group, so we can call the same $join + // function (server calls .attachGroup(), which finds group by _id and handles this properly) + if (group.id && !group._id) { + group = new Groups.Group({_id:group.id}); + } + group.$join(function(saved){ //$scope.groups.guilds.push(saved); alert('Joined guild, refresh page to see changes') diff --git a/src/controllers/groups.js b/src/controllers/groups.js index a59a6c4ce2..e464e330d8 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -218,7 +218,7 @@ api.join = function(req, res, next) { } else if (group.type == 'guild' && user.invitations && user.invitations.guilds) { var i = _.findIndex(user.invitations.guilds, {id:group._id}); - if (~i) user.invitations.guilds.slice(i,1); + if (~i) user.invitations.guilds.splice(i,1); user.save(); } @@ -273,7 +273,6 @@ api.invite = function(req, res, next) { function sendInvite (){ if(group.type === 'guild'){ - if(!invite.invitations.guilds) invite.invitations.guilds = [] //necessary invite.invitations.guilds.push({id: group._id, name: group.name}); }else{ //req.body.type in 'guild', 'party' diff --git a/src/models/user.js b/src/models/user.js index 7f32ba1f69..2c12fd1c93 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -87,7 +87,7 @@ var UserSchema = new Schema({ /* FIXME remove?*/ invitations: { - guilds: Array, + guilds: {type: Array, 'default': []}, party: Schema.Types.Mixed }, items: {