UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

71 lines (70 loc) 3.59 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _require = require('@forestadmin/context'), inject = _require.inject; var logger = require('../../../services/logger'); function getContactQueryParameter(targetFieldValue) { var targetField = targetFieldValue.includes('@') ? 'email' : 'external_id'; return { query: { field: targetField, operator: '=', value: targetFieldValue } }; } var ContactGetter = /*#__PURE__*/function () { function ContactGetter() { (0, _classCallCheck2["default"])(this, ContactGetter); } (0, _createClass2["default"])(ContactGetter, null, [{ key: "getContact", value: function () { var _getContact = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(intercomClient, Implementation, mappingValue, recordId) { var _inject, modelsManager, _mappingValue$split, _mappingValue$split2, modelName, modelFieldName, model, customer, targetFieldValue, queryParameter; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _inject = inject(), modelsManager = _inject.modelsManager; // NOTICE: `modelFieldName` is expected to be a sequelize/mongoose field // (ie. camelCase formatted) _mappingValue$split = mappingValue.split('.'), _mappingValue$split2 = (0, _slicedToArray2["default"])(_mappingValue$split, 2), modelName = _mappingValue$split2[0], modelFieldName = _mappingValue$split2[1]; model = modelsManager.getModels()[modelName]; _context.next = 5; return Implementation.Intercom.getCustomer(model, recordId); case 5: customer = _context.sent; targetFieldValue = customer[modelFieldName]; if (targetFieldValue) { _context.next = 10; break; } // NOTICE: `undefined` means the field does not exist. if (targetFieldValue === undefined) { logger.error("Intercom Integration Error: No field \"".concat(modelFieldName, "\" on model \"").concat(modelName, "\"")); } // TODO: An info log should be shown here: no "mapping value" and so no intercom info // can be retrieved in this context return _context.abrupt("return", null); case 10: queryParameter = getContactQueryParameter(targetFieldValue); // TODO: Replace this by a proper call to intercom.contacts.search() when available return _context.abrupt("return", intercomClient.post('/contacts/search', queryParameter)); case 12: case "end": return _context.stop(); } }, _callee); })); function getContact(_x, _x2, _x3, _x4) { return _getContact.apply(this, arguments); } return getContact; }() }]); return ContactGetter; }(); module.exports = ContactGetter;