UNPKG

devshare

Version:

Library to communicate with devshare development sharing platform.

63 lines (54 loc) 2.58 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getByUsername = exports.getUid = undefined; 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 getUid = exports.getUid = function getUid(username) { return !username ? Promise.reject('Username is required to get Uid') : (0, _firebaser.get)([_config.paths.usernames, username])().then(function (uid) { return uid || Promise.reject('Not Found. ' + username + ' is not a valid username.'); }); }; var getByUsername = exports.getByUsername = function getByUsername(username) { return !username ? Promise.reject('Username is required to get user') : getUid(username).then(function (uid) { return (0, _firebaser.get)([_config.paths.users, uid])().then(function (user) { return !user ? Promise.reject('User not found.') : _extends({}, user, { uid: uid }); }); }); }; exports.default = function (username) { var methods = { // TODO: Firebase function to include username in token (this query won't be needed) get: function get() { return getByUsername(username); }, getFromUid: function getFromUid(uid) { return (0, _firebaser.get)([_config.paths.users, uid])(); }, update: function update(newUserData) { return getByUsername(username).then(function (user) { return (0, _firebaser.update)([_config.paths.users, user.uid])(newUserData).then(function () { return _extends({}, user, newUserData); }); }); }, remove: function remove() { return (0, _firebaser.get)([_config.paths.usernames, username]).then(function (uid) { return Promise.all([(0, _firebaser.remove)([_config.paths.users, uid]), // Remove all Projects based on projects names list (0, _firebaser.createFirebaseRef)([_config.paths.projectNames, uid]).then(function (ref) { var promises = []; ref.forEach(function (projectIdSnap) { promises.push((0, _firebaser.remove)([_config.paths.projects, projectIdSnap.val()])); }); return Promise.all(promises).then(function () { return ref.remove(); }); }), (0, _firebaser.remove)([_config.paths.usernames, username])]); }); } }; return _extends({}, methods); };