@reactivehub/cli
Version:
115 lines (100 loc) • 3.3 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 = {
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