@kiwicom/smart-faq
Version:
Smart FAQ
182 lines (153 loc) • 5.53 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.withLogout = exports.BookingState = exports.getFAQSection = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var React = _interopRequireWildcard(require("react"));
// @flow
/* eslint-disable react/no-unused-state */
var getFAQSection = function getFAQSection(_ref) {
var hasBooking = _ref.hasBooking,
isPastBooking = _ref.isPastBooking,
isUrgent = _ref.isUrgent;
if (!hasBooking) return 'BEFORE_BOOKING';
if (isPastBooking) return 'PAST_BOOKING';
if (isUrgent) return 'URGENT_BOOKING';
return 'UPCOMING_BOOKING';
};
exports.getFAQSection = getFAQSection;
var initialState = {
FAQSection: 'BEFORE_BOOKING',
selectedBooking: null,
showBooking: true
};
var BookingState
/*: React.Context<State>*/
= React.createContext((0, _objectSpread2.default)({}, initialState, {
onSetFAQSection: function onSetFAQSection(isUrgent
/*: boolean*/
, isPastBooking
/*: boolean*/
) {},
// eslint-disable-line no-unused-vars
onLogout: function onLogout() {
return Promise.resolve(null);
}
}));
exports.BookingState = BookingState;
var BookingStateProvider =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(BookingStateProvider, _React$Component);
(0, _createClass2.default)(BookingStateProvider, null, [{
key: "getDerivedStateFromProps",
value: function getDerivedStateFromProps(nextProps
/*: Props*/
, state
/*: State*/
) {
if (nextProps.showBooking !== state.showBooking) {
return {
showBooking: nextProps.showBooking
};
}
return null;
}
}]);
function BookingStateProvider(props
/*: Props*/
) {
var _this;
(0, _classCallCheck2.default)(this, BookingStateProvider);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BookingStateProvider).call(this, props));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onLogout",
/*#__PURE__*/
(0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _this.props.onLogout();
case 2:
_this.setState({
FAQSection: 'BEFORE_BOOKING'
});
case 3:
case "end":
return _context.stop();
}
}
}, _callee, this);
})));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "onSetFAQSection", function (isUrgent
/*: boolean*/
, isPastBooking
/*: boolean*/
) {
var section = getFAQSection({
isUrgent: isUrgent,
isPastBooking: isPastBooking,
hasBooking: true
});
_this.setState(function (_ref3) {
var FAQSection = _ref3.FAQSection;
if (FAQSection !== section) {
return {
FAQSection: section
};
}
});
});
_this.state = (0, _objectSpread2.default)({}, initialState, {
showBooking: props.showBooking,
onSetFAQSection: _this.onSetFAQSection,
FAQSection: getFAQSection({
hasBooking: false
}),
onLogout: _this.onLogout
});
return _this;
}
(0, _createClass2.default)(BookingStateProvider, [{
key: "render",
value: function render() {
return React.createElement(BookingState.Provider, {
value: this.state
}, this.props.children);
}
}]);
return BookingStateProvider;
}(React.Component);
var withLogout = function withLogout(Component
/*: React.ComponentType<{} & Props>*/
) {
return function withLogoutHOC(props
/*: Props*/
) {
return React.createElement(BookingState.Consumer, null, function (_ref4) {
var onLogout = _ref4.onLogout;
return React.createElement(Component, (0, _extends2.default)({}, props, {
onLogout: onLogout
}));
});
};
};
exports.withLogout = withLogout;
var _default = BookingStateProvider;
exports.default = _default;
;