devshare
Version:
Library to communicate with devshare development sharing platform.
63 lines (54 loc) • 2.58 kB
JavaScript
;
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);
};