@reactivehub/cli
Version:
98 lines (83 loc) • 2.83 kB
JavaScript
;
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 = {
name: 'LIST',
actions: [{
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
}, {
name: 'edit-member',
processor: 'EDIT_LIST_MEMBER',
buildTemplate: ({ email_address: email }) => (0, _extends3.default)({
email_address: `{${email}}`,
status: ''
}, memberFields),
deploy: (action, eventInfo) => deploy(action, eventInfo, 'EDIT_LIST_MEMBER'),
questions
}, {
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
}]
};
//# sourceMappingURL=list.js.map