react-escalade-priceline
Version:
Dynamically fetch or prefetch Escalade stock & pricing.
121 lines (93 loc) • 3.06 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 _pricingState = require('./pricing-state');
var _pricingState2 = _interopRequireDefault(_pricingState);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Price = function (_Component) {
(0, _inherits3.default)(Price, _Component);
function Price(props) {
(0, _classCallCheck3.default)(this, Price);
var _this = (0, _possibleConstructorReturn3.default)(this, (Price.__proto__ || (0, _getPrototypeOf2.default)(Price)).call(this, props));
_this.state = {};
_this.fetch = _this.fetch.bind(_this);
return _this;
}
(0, _createClass3.default)(Price, [{
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.price) {
options.endpoint = options.endpoint.price;
}
_pricingState2.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: _pricingState2.default },
function (price) {
if (_this2.props.children) {
var obj = void 0;
if (id) {
obj = {
price: price[id.toLowerCase()],
loading: !(id.toLowerCase() in price)
};
} else {
obj = {
price: price,
loading: !price
};
}
return _this2.props.children(obj);
}
}
);
}
}]);
return Price;
}(_react.Component);
Price.defaultProps = {
env: 'production',
endpoints: {
production: 'https://pricing.escsportsapi.com/load',
testing: 'https://pricing-test.escsportsapi.com/load'
}
};
exports.default = Price;