Files
habitica/website/public/js/services/memberServices.js
T
2015-07-18 16:00:06 -05:00

61 lines
1.4 KiB
JavaScript

'use strict';
(function(){
angular
.module('habitrpg')
.factory('Members', membersFactory);
membersFactory.$inject = [
'$rootScope',
'Shared',
'ApiUrl',
'$resource'
];
function membersFactory($rootScope, Shared, ApiUrl, $resource) {
var members = {};
var fetchMember = $resource(ApiUrl.get() + '/api/v2/members/:uid', { uid: '@_id' }).get;
function selectMember(uid, cb) {
var self = this;
var memberIsReady = _checkIfMemberIsReady(members[uid]);
if (memberIsReady) {
_prepareMember(self, members[uid], cb);
} else {
fetchMember({ uid: uid }, function(member) {
addToMembersList(member); // lazy load for later
_prepareMember(self, member, cb);
});
}
}
function addToMembersList(member){
if (member._id) {
members[member._id] = member;
}
}
function _checkIfMemberIsReady(member) {
return member && member.items && member.items.weapon;
}
function _prepareMember(self, member, cb) {
Shared.wrap(member, false);
self.selectedMember = members[member._id];
cb();
}
$rootScope.$on('userUpdated', function(event, user){
addToMembersList(user);
})
return {
members: members,
addToMembersList: addToMembersList,
selectedMember: undefined,
selectMember: selectMember
}
}
}());