devshare
Version:
Library to communicate with devshare development sharing platform.
55 lines (45 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _config = require('../../config');
var _firebaser = require('../../utils/firebaser');
var _user = require('../../user');
exports.default = function (owner, projectname) {
var methods = {
get: function get() {
return (0, _user.getUid)(owner).then(function (uid) {
return (0, _firebaser.get)([_config.paths.projects, uid, projectname, 'collaborators'])();
});
},
add: function add(newCollabUsername) {
return Promise.all([(0, _user.getUid)(owner), (0, _user.getUid)(newCollabUsername)]).then(function (uids) {
return (0, _firebaser.createFirebaseRef)([_config.paths.projects, uids[0], projectname, 'collaborators'])().once('value').then(function (collabsSnap) {
if (collabsSnap.val()) {
// TODO: Make sure user is not already a collaborator
return collabsSnap.ref.child(Object.keys(collabsSnap.val()).length).set(uids[1]);
}
return collabsSnap.ref.set([uids[1]]);
});
});
},
remove: function remove(removeUsername) {
return Promise.all([(0, _user.getUid)(owner), (0, _user.getUid)(removeUsername)]).then(function (uids) {
return (0, _firebaser.createFirebaseRef)([_config.paths.projects, uids[0], projectname, 'collaborators'])().once('value').then(function (collabsSnap) {
if (!collabsSnap.hasChildren()) {
return Promise.reject('Can not remove user from project collaborators');
}
if (collabsSnap.val().indexOf(uids[1]) === -1) {
return Promise.reject('User is not a collaborator');
}
return collabsSnap.ref.set(collabsSnap.val().filter(function (id) {
return id !== uids[1];
}));
});
});
}
};
return _extends({}, methods);
};
module.exports = exports['default'];