UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

55 lines (45 loc) 2.17 kB
'use strict'; 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'];