UNPKG

lacona-osx

Version:

Lacona Extensions for OSX, tied into the global-context hosted API

115 lines (94 loc) 3.9 kB
'use strict'; 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, []); } } };