lacona-osx
Version:
Lacona Extensions for OSX, tied into the global-context hosted API
115 lines (94 loc) • 3.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Contacts = exports.UserContact = undefined;
exports.possibleNameCombinations = possibleNameCombinations;
exports.spreadObject = spreadObject;
exports.spread = spread;
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _laconaApi = require('lacona-api');
var _Observable = require('rxjs/Observable');
var _mergeMap = require('rxjs/operator/mergeMap');
var _startWith = require('rxjs/operator/startWith');
var _concat = require('rxjs/operator/concat');
var _fromPromise = require('rxjs/observable/fromPromise');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function possibleNameCombinations({ firstName, middleName, lastName, nickname, company }) {
const possibleNames = [];
if (firstName && lastName) {
possibleNames.push({ name: `${firstName} ${lastName}`, qualifiers: [] });
}
if (firstName) {
if (lastName) {
possibleNames.push({ name: firstName, qualifiers: [lastName] });
} else {
possibleNames.push({ name: firstName, qualifiers: [] });
}
}
if (lastName && !firstName) {
possibleNames.push({ name: lastName, qualifiers: [] });
}
if (company && !firstName && !lastName) {
possibleNames.push({ name: company, qualifiers: [] });
}
if (nickname) {
if (firstName && lastName) {
possibleNames.push({ name: nickname, qualifiers: [`${firstName} ${lastName}`] });
} else if (lastName) {
possibleNames.push({ name: nickname, qualifiers: [lastName] });
} else if (firstName) {
possibleNames.push({ name: nickname, qualifiers: [firstName] });
} else {
possibleNames.push({ name: nickname, qualifiers: [] });
}
}
return possibleNames;
}
function spreadObject(obj, spreadKey, dataKeys = [], valueKey = 'value', labelKey = 'label') {
const spreadData = _lodash2.default.chain(obj[spreadKey]).map(({ value, label }) => {
return _lodash2.default.assign(valueKey ? { [valueKey]: value } : {}, labelKey ? { [labelKey]: label } : {}, _lodash2.default.pick(value, dataKeys));
}).value();
return spreadData;
}
function spread(data, spreadKey, dataKeys = [], valueKey = 'value', labelKey = 'label') {
const spreadData = _lodash2.default.chain(data).map(item => {
return _lodash2.default.map(item[spreadKey], ({ value, label }) => {
return _lodash2.default.assign(valueKey ? { [valueKey]: value } : {}, labelKey ? { [labelKey]: label } : {}, _lodash2.default.pick(item, dataKeys));
});
}).flatten().value();
return spreadData;
}
const UserContact = exports.UserContact = {
fetch({ activate }) {
if ((0, _laconaApi.isDemo)()) {
return new _Observable.Observable(observer => {
_laconaApi.fetchUserContact.then(contacts => {
observer.next(contacts);
});
});
} else {
var _context;
return (_context = (_context = (0, _fromPromise.fromPromise)((0, _laconaApi.fetchUserContact)()), _concat.concat).call(_context, _mergeMap.mergeMap.call(activate, () => {
return (0, _fromPromise.fromPromise)((0, _laconaApi.fetchUserContact)());
})), _startWith.startWith).call(_context, {});
}
}
};
const Contacts = exports.Contacts = {
fetch({ activate }) {
if ((0, _laconaApi.isDemo)()) {
return new _Observable.Observable(observer => {
return (0, _laconaApi.fetchContacts)().then(contacts => {
observer.next(contacts);
});
});
} else {
var _context2;
return (_context2 = (_context2 = (0, _fromPromise.fromPromise)((0, _laconaApi.fetchContacts)()), _concat.concat).call(_context2, _mergeMap.mergeMap.call(activate, () => {
return (0, _fromPromise.fromPromise)((0, _laconaApi.fetchContacts)());
})), _startWith.startWith).call(_context2, []);
}
}
};