react-escalade-priceline
Version:
Dynamically fetch or prefetch Escalade stock & pricing.
122 lines (94 loc) • 3.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _statable = require('statable');
var _stockState = require('./stock-state');
var _stockState2 = _interopRequireDefault(_stockState);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Stock = function (_Component) {
(0, _inherits3.default)(Stock, _Component);
function Stock(props) {
(0, _classCallCheck3.default)(this, Stock);
var _this = (0, _possibleConstructorReturn3.default)(this, (Stock.__proto__ || (0, _getPrototypeOf2.default)(Stock)).call(this, props));
_this.state = {};
_this.fetch = _this.fetch.bind(_this);
return _this;
}
(0, _createClass3.default)(Stock, [{
key: 'componentDidMount',
value: function componentDidMount() {
this.fetch();
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
this.fetch();
}
}, {
key: 'fetch',
value: function fetch() {
var options = (0, _extends3.default)({}, this.props);
if (!options.endpoint) {
options.endpoint = this.props.endpoints[options.env];
} else if (options.endpoint.stock) {
options.endpoint = options.endpoint.stock;
}
_stockState2.default.fetch(options);
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
if (!this.props.children || !this.props.id && !this.props.ids) {
return null;
}
var id = this.props.id;
return _react2.default.createElement(
_statable.Subscribe,
{ to: _stockState2.default },
function (stock) {
if (_this2.props.children) {
var obj = void 0;
if (id) {
var lowerId = id.toLowerCase();
obj = {
stock: stock[lowerId],
loading: !(lowerId in stock)
};
} else {
obj = {
stock: stock,
loading: !stock
};
}
return _this2.props.children(obj);
}
}
);
}
}]);
return Stock;
}(_react.Component);
Stock.defaultProps = {
env: 'production',
endpoints: {
production: 'https://inventory.escsportsapi.com/load',
testing: 'https://inventory-test.escsportsapi.com/load'
}
};
exports.default = Stock;