all files / src/ Groups.js

96% Statements 24/25
50% Branches 2/4
100% Functions 5/5
96% Lines 24/25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                                                     
'use strict';
 
var log = require('./Log.js').Logger('libZotero:Groups');
 
module.exports = function(){
	this.instance = 'Zotero.Groups';
	this.groupsArray = [];
};
/*
 module.exports.prototype.fetchGroup = function(groupID, apikey){
	//TODO: implement
};
*/
module.exports.prototype.addGroupsFromJson = function(jsonBody){
	var groups = this;
	var groupsAdded = [];
	jsonBody.forEach(function(groupObj){
		log.debug(groupObj, 3);
		var group = new Zotero.Group(groupObj);
		groups.groupsArray.push(group);
		groupsAdded.push(group);
	});
	return groupsAdded;
};
 
module.exports.prototype.fetchUserGroups = function(userID, apikey){
	var groups = this;
	var aparams = {
		'target':'userGroups',
		'libraryType':'user',
		'libraryID': userID,
		'order':'title'
	};
	
	Iif(apikey){
		aparams['key'] = apikey;
	}
	else Eif(groups.owningLibrary) {
		aparams['key'] = groups.owningLibrary._apiKey;
	}
	
	return Zotero.ajaxRequest(aparams)
	.then(function(response){
		log.debug('fetchUserGroups proxied callback', 3);
		var fetchedGroups = groups.addGroupsFromJson(response.data);
		response.fetchedGroups = fetchedGroups;
		return response;
	});
};