UNPKG

medusa-plugin-culqi-card

Version:

Medusa plugin for processing credit card payments with Culqi

163 lines (162 loc) 8.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _medusaCoreUtils = require("medusa-core-utils"); var _culqiClient = _interopRequireDefault(require("../helpers/culqi-client")); var _culqi = require("../helpers/culqi"); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var CulqiCustomerSubscriber = /*#__PURE__*/(0, _createClass2["default"])(function CulqiCustomerSubscriber(_ref) { var _this = this; var eventBusService = _ref.eventBusService, customerService = _ref.customerService, culqiLogService = _ref.culqiLogService; (0, _classCallCheck2["default"])(this, CulqiCustomerSubscriber); (0, _defineProperty2["default"])(this, "handleNewCustomer", /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(customer) { var _yield$getOrCreateCul, _yield$getOrCreateCul2, culqiCustomerId, _, error; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.next = 2; return (0, _culqi.getOrCreateCulqiCustomer)({ culqiClient: _this.culqiClient_, customer: customer, email: customer.email, address: null }); case 2: _yield$getOrCreateCul = _context.sent; _yield$getOrCreateCul2 = (0, _slicedToArray2["default"])(_yield$getOrCreateCul, 3); culqiCustomerId = _yield$getOrCreateCul2[0]; _ = _yield$getOrCreateCul2[1]; error = _yield$getOrCreateCul2[2]; if (!error) { _context.next = 9; break; } throw new _medusaCoreUtils.MedusaError(_medusaCoreUtils.MedusaError.Types.UNEXPECTED_STATE, "Failed to create Culqi customer with error: ".concat(error.merchant_message), error.code); case 9: _context.next = 11; return _this.customerService_.update(customer.id, { metadata: _objectSpread(_objectSpread({}, customer.metadata || {}), {}, { culqi_customer_id: culqiCustomerId }) }); case 11: case "end": return _context.stop(); } }, _callee); })); return function (_x) { return _ref2.apply(this, arguments); }; }()); (0, _defineProperty2["default"])(this, "handleUpdatedCustomer", /*#__PURE__*/function () { var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(customer) { var _customer$metadata, _customer$metadata2; var culqiCustomerId, isCompany, updateData, _customer$metadata3, _yield$_this$culqiCli, _yield$_this$culqiCli2, _, error; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) switch (_context2.prev = _context2.next) { case 0: culqiCustomerId = (_customer$metadata = customer.metadata) === null || _customer$metadata === void 0 ? void 0 : _customer$metadata.culqi_customer_id; isCompany = (_customer$metadata2 = customer.metadata) === null || _customer$metadata2 === void 0 ? void 0 : _customer$metadata2.is_company; if (!culqiCustomerId) { _context2.next = 14; break; } updateData = {}; if (!isCompany) { if (customer.first_name) { updateData.first_name = customer.first_name; } if (customer.last_name) { updateData.last_name = customer.last_name; } if (customer.phone) { updateData.phone_number = customer.phone; } } else { if (customer.first_name && (_customer$metadata3 = customer.metadata) !== null && _customer$metadata3 !== void 0 && _customer$metadata3.external_user_id) { updateData.metadata = { external_user_id: customer.metadata.external_user_id, company_name: customer.first_name }; } } if (Object.keys(updateData).length) { _context2.next = 7; break; } return _context2.abrupt("return"); case 7: _context2.next = 9; return _this.culqiClient_.updateCustomerAsync(culqiCustomerId, updateData); case 9: _yield$_this$culqiCli = _context2.sent; _yield$_this$culqiCli2 = (0, _slicedToArray2["default"])(_yield$_this$culqiCli, 2); _ = _yield$_this$culqiCli2[0]; error = _yield$_this$culqiCli2[1]; if (error) { // continue with the flow, but log the error } case 14: case "end": return _context2.stop(); } }, _callee2); })); return function (_x2) { return _ref3.apply(this, arguments); }; }()); (0, _defineProperty2["default"])(this, "handleDeletedCustomer", /*#__PURE__*/function () { var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(customer) { var _customer$metadata4; var culqiCustomerId, _yield$_this$culqiCli3, _yield$_this$culqiCli4, deleted, error; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) switch (_context3.prev = _context3.next) { case 0: culqiCustomerId = (_customer$metadata4 = customer.metadata) === null || _customer$metadata4 === void 0 ? void 0 : _customer$metadata4.culqi_customer_id; if (!culqiCustomerId) { _context3.next = 9; break; } _context3.next = 4; return _this.culqiClient_.deleteCustomerAsync(culqiCustomerId); case 4: _yield$_this$culqiCli3 = _context3.sent; _yield$_this$culqiCli4 = (0, _slicedToArray2["default"])(_yield$_this$culqiCli3, 2); deleted = _yield$_this$culqiCli4[0]; error = _yield$_this$culqiCli4[1]; if (error || !deleted) { // continue with the flow, but log the error } case 9: case "end": return _context3.stop(); } }, _callee3); })); return function (_x3) { return _ref4.apply(this, arguments); }; }()); this.customerService_ = customerService; this.culqiClient_ = new _culqiClient["default"](culqiLogService); eventBusService.subscribe('customer.created', this.handleNewCustomer); eventBusService.subscribe('customer.updated', this.handleUpdatedCustomer); eventBusService.subscribe('customer.deleted', this.handleDeletedCustomer); }); var _default = CulqiCustomerSubscriber; exports["default"] = _default;