UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

134 lines (105 loc) 4.64 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.RawBookingAnalyticsTracker = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); 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 _idx = _interopRequireDefault(require("idx")); var React = _interopRequireWildcard(require("react")); var _difference_in_hours = _interopRequireDefault(require("date-fns/difference_in_hours")); var _reactRelay = require("react-relay"); var _bookingTypes = _interopRequireDefault(require("../common/booking/bookingTypes")); var _trackers = require("../../shared/helpers/analytics/trackers"); var _tracker = require("../../shared/cuckoo/tracker"); // @flow var BookingAnalyticsTracker = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(BookingAnalyticsTracker, _React$Component); function BookingAnalyticsTracker() { (0, _classCallCheck2.default)(this, BookingAnalyticsTracker); return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(BookingAnalyticsTracker).apply(this, arguments)); } (0, _createClass2.default)(BookingAnalyticsTracker, [{ key: "componentDidMount", value: function componentDidMount() { this.trackBooking(); } }, { key: "componentDidUpdate", value: function componentDidUpdate(prevProps /*: Props*/ ) { if (prevProps.booking.id === this.props.booking.id) { return; } this.trackBooking(); } }, { key: "trackBooking", value: function trackBooking() { var data = this.getAnalyticsData(); (0, _trackers.simpleTracker)('smartFAQBookingOverview', (0, _objectSpread2.default)({ action: 'bookingLoaded' }, data)); (0, _tracker.track)('BookingOverview', 'bookingLoaded', data); } }, { key: "getAnalyticsData", value: function getAnalyticsData() { var booking = this.props.booking; var upcomingDeparture = (0, _idx.default)(booking, function (_) { return _.upcomingDeparture.departure.time; }); var firstDeparture = null; switch (booking.type) { case _bookingTypes.default.ONE_WAY: firstDeparture = (0, _idx.default)(booking, function (_) { return _.trip.departure.time; }); break; case _bookingTypes.default.RETURN: firstDeparture = (0, _idx.default)(booking, function (_) { return _.outbound.departure.time; }); break; case _bookingTypes.default.MULTICITY: firstDeparture = (0, _idx.default)(booking, function (_) { return _.start.time; }); break; } var timeToSegment = upcomingDeparture ? (0, _difference_in_hours.default)(upcomingDeparture, new Date()) : false; var timeToDeparture = firstDeparture ? (0, _difference_in_hours.default)(firstDeparture, new Date()) : false; return { timeToDeparture: timeToDeparture ? Math.round(timeToDeparture) : timeToDeparture, timeToSegment: timeToSegment ? Math.round(timeToSegment) : timeToSegment }; } }, { key: "render", value: function render() { return null; } }]); return BookingAnalyticsTracker; }(React.Component); var RawBookingAnalyticsTracker = BookingAnalyticsTracker; exports.RawBookingAnalyticsTracker = RawBookingAnalyticsTracker; var _default = (0, _reactRelay.createFragmentContainer)(BookingAnalyticsTracker, { booking: function booking() { var node = require("./__generated__/BookingAnalyticsTracker_booking.graphql"); if (node.hash && node.hash !== "ce761ec1cb05c0c0b47e14c6aa15a98c") { console.error("The definition of 'BookingAnalyticsTracker_booking' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."); } return require("./__generated__/BookingAnalyticsTracker_booking.graphql"); } }); exports.default = _default;