UNPKG

@reactivehub/cli

Version:
115 lines (100 loc) 3.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _objects = require('../../../libs/objects'); var _objects2 = _interopRequireDefault(_objects); var _api = require('../../../services/api'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const emailHolderQuestion = model => ({ type: 'autocomplete', name: 'email_address', message: 'Which field in the event model holds the customer email?', source: (() => { var _ref = (0, _asyncToGenerator3.default)(function* (answersSoFar, input = 'mail') { const { suggestions, otherFields } = _objects2.default.getKeySuggestions(model, input); const sourceModel = [].concat(suggestions || [], otherFields || []); return sourceModel; }); return function source(_x) { return _ref.apply(this, arguments); }; })() }); const questions = eventModel => [emailHolderQuestion(eventModel)]; const memberFields = { listId: 'the-mailchimp-list-id', merge_fields: {}, interests: {}, language: 'en', vip: false, location: { latitude: '', longitude: '' }, tags: '' }; const deploy = (action, eventInfo, serviceAction) => { const { email, status, listId, tags } = action; const payload = { email, status, listId }; if (tags !== '') payload.tags = tags; // TODO CALL DEPLOY API / TEST IF TAG IS EMPTY SET NULL return (0, _api.sendAction)(eventInfo, (0, _extends3.default)({ serviceAction }, action)); }; exports.default = { ADD_LIST_MEMBER: { name: 'add-member', processor: 'ADD_LIST_MEMBER', buildTemplate: ({ email_address: email }) => (0, _extends3.default)({ email: `{${email}}`, status: 'subscribed' }, memberFields), deploy: (action, eventInfo) => deploy(action, eventInfo, 'ADD_LIST_MEMBER'), questions }, EDIT_LIST_MEMBER: { name: 'edit-member', processor: 'EDIT_LIST_MEMBER', buildTemplate: ({ email_address: email }) => (0, _extends3.default)({ email: `{${email}}`, status: '' }, memberFields), deploy: (action, eventInfo) => deploy(action, eventInfo, 'EDIT_LIST_MEMBER'), questions }, DELETE_LIST_MEMBER: { name: 'delete-member', processor: 'DELETE_LIST_MEMBER', buildTemplate: ({ email_address: email }) => ({ email: `{${email}}`, listId: 'type-the-mailchimp-list-id' }), deploy: (action, eventInfo) => (0, _api.sendAction)(eventInfo, (0, _extends3.default)({ serviceAction: 'DELETE_LIST_MEMBER' }, action)), questions }, CREATE_TAG: { name: 'create-tag', processor: 'CREATE_TAG', buildTemplate: () => ({ listId: 'type-the-mailchimp-list-id', payload: { email: 'String', tags: [{ name: 'String', status: 'active | inactive' }] } }), deploy: (action, eventInfo) => (0, _api.sendAction)(eventInfo, (0, _extends3.default)({ serviceAction: 'CREATE_TAG' }, action)), questions } }; //# sourceMappingURL=member.js.map