From 1a388fa994580abc699fa9c9e1c51cec96900ab5 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 20 Nov 2013 21:36:18 +0100 Subject: [PATCH] fix #1803, when getting a drop do not return whole user, @lefnire it is ok to change api return data or we need to annouce it before so that third parties can update their code? --- public/js/controllers/notificationCtrl.js | 1 + public/js/services/userServices.js | 5 +++-- src/controllers/user.js | 7 +++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/public/js/controllers/notificationCtrl.js b/public/js/controllers/notificationCtrl.js index ba9a4cc5aa..89a440f7c9 100644 --- a/public/js/controllers/notificationCtrl.js +++ b/public/js/controllers/notificationCtrl.js @@ -39,6 +39,7 @@ habitrpg.controller('NotificationCtrl', }); $rootScope.$watch('user.achievements.ultimateGear', function(after, before){ + console.log(after, before) if (after === before || after !== true) return; $rootScope.modals.achievements.ultimateGear = true; }); diff --git a/public/js/services/userServices.js b/public/js/services/userServices.js index 187f65761a..bf9b605a87 100644 --- a/public/js/services/userServices.js +++ b/public/js/services/userServices.js @@ -65,13 +65,14 @@ angular.module('userServices', []). // the user has been modified from another application, sync up if(data.wasModified) { delete data.wasModified; - _.extend(user, data); $rootScope.$emit('userUpdated', user); } + // Update user + _.extend(user, data); + // Emit event when user is synced $rootScope.$emit('userSynced'); - user._v = data._v; } sent.length = 0; settings.fetching = false; diff --git a/src/controllers/user.js b/src/controllers/user.js index f581ec1d9a..2a9d0c9956 100644 --- a/src/controllers/user.js +++ b/src/controllers/user.js @@ -566,10 +566,9 @@ api.batchUpdate = function(req, res, next) { if (err) return res.json(500, {err: err}); var response = user.toJSON(); response.wasModified = res.locals.wasModified; - if (response._tmp && response._tmp.drop) response.wasModified = true; - - // Send the response to the server - if(response.wasModified){ + if (response._tmp && response._tmp.drop){ + res.json(200, {_tmp: {drop: response._tmp.drop}, _v: response._v}); + }else if(response.wasModified){ res.json(200, response); }else{ res.json(200, {_v: response._v});