UNPKG

react-redux-isomorphic

Version:

Set of utilities for creating isomorphic applications using react-redux

199 lines (156 loc) 6.35 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.ContextResolver = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _react = require("react"); var _inject = _interopRequireDefault(require("./inject")); var _errors = require("./errors"); var ContextResolver = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(ContextResolver, _Component); var _super = (0, _createSuper2["default"])(ContextResolver); function ContextResolver(props) { var _this; (0, _classCallCheck2["default"])(this, ContextResolver); _this = _super.call(this, props); _this.init(); return _this; } (0, _createClass2["default"])(ContextResolver, [{ key: "componentDidUpdate", value: function () { var _componentDidUpdate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(oldProps) { var _this$props, shouldReload, componentProps; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _this$props = this.props, shouldReload = _this$props.shouldReload, componentProps = _this$props.componentProps; if (!(shouldReload && shouldReload(componentProps, oldProps.componentProps))) { _context.next = 6; break; } _context.next = 4; return this.destroy(); case 4: _context.next = 6; return this.init(); case 6: case "end": return _context.stop(); } } }, _callee, this); })); function componentDidUpdate(_x) { return _componentDidUpdate.apply(this, arguments); } return componentDidUpdate; }() }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.destroy(); } }, { key: "init", value: function init() { var _this$props2 = this.props, isReady = _this$props2.isomorphic.isReady, isomorphicId = _this$props2.isomorphicId, loadContext = _this$props2.loadContext; if (!isReady) { loadContext(isomorphicId); } return this.requestContext(); } }, { key: "requestContext", value: function () { var _requestContext = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { var _this$props3, componentProps, isomorphicId, isReady, loadParams, getContext, loadContextSuccess, loadContextError, error, context; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _this$props3 = this.props, componentProps = _this$props3.componentProps, isomorphicId = _this$props3.isomorphicId, isReady = _this$props3.isomorphic.isReady, loadParams = _this$props3.loadParams, getContext = _this$props3.getContext, loadContextSuccess = _this$props3.loadContextSuccess, loadContextError = _this$props3.loadContextError; if (!isReady) { _context2.next = 3; break; } return _context2.abrupt("return"); case 3: _context2.prev = 3; _context2.next = 6; return getContext(loadParams, componentProps); case 6: context = _context2.sent; loadContextSuccess(isomorphicId, context); _context2.next = 13; break; case 10: _context2.prev = 10; _context2.t0 = _context2["catch"](3); error = _context2.t0; case 13: if (error) { _context2.next = 15; break; } return _context2.abrupt("return"); case 15: if (!(error instanceof _errors.LoadContextError)) { _context2.next = 19; break; } loadContextError(isomorphicId, error.error); _context2.next = 20; break; case 19: throw error; case 20: case "end": return _context2.stop(); } } }, _callee2, this, [[3, 10]]); })); function requestContext() { return _requestContext.apply(this, arguments); } return requestContext; }() }, { key: "destroy", value: function destroy() { var _this$props4 = this.props, isomorphicId = _this$props4.isomorphicId, destroy = _this$props4.destroy; destroy(isomorphicId); } }, { key: "render", value: function render() { var _this$props5 = this.props, isomorphic = _this$props5.isomorphic, component = _this$props5.component, componentProps = _this$props5.componentProps; return /*#__PURE__*/(0, _react.createElement)(component, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, componentProps), {}, { isomorphic: isomorphic })); } }]); return ContextResolver; }(_react.Component); exports.ContextResolver = ContextResolver; var IsomorphicWrapper = (0, _inject["default"])(ContextResolver); var _default = IsomorphicWrapper; exports["default"] = _default;