@kiwicom/smart-faq
Version:
192 lines (158 loc) • 5.79 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 _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
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
};
/*:: export type FAQSectionType =
| 'BEFORE_BOOKING'
| 'UPCOMING_BOOKING'
| 'URGENT_BOOKING'
| 'PAST_BOOKING';*/
/*:: type Props = {
children: React.Node,
isPastBooking?: boolean, // eslint-disable-line react/no-unused-prop-types
isUrgent?: boolean, // eslint-disable-line react/no-unused-prop-types
onLogout: onLogout,
};*/
/*:: type StateValues = {
FAQSection: ?FAQSectionType,
};*/
/*:: type StateCallbacks = {
onSetFAQSection: (isUrgent: boolean, isPastBooking: boolean) => void,
onLogout: onLogout,
};*/
/*:: type BookingStateDescription = {
hasBooking: boolean,
isPastBooking?: boolean,
isUrgent?: boolean,
};*/
/*:: export type BookingStateType = StateValues & StateCallbacks;*/
var BookingState = 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);
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, {
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;