UNPKG

@kiwicom/smart-faq

Version:

56 lines (43 loc) 1.73 kB
// @flow import differenceInHours from 'date-fns/difference_in_hours'; import bookingTypes from './bookingTypes'; import { URGENCY_THRESHOLD } from '../../helpers/dateUtils'; import type { BookingDetail_booking as BookingDetailType } from '../../SingleBookingPage/__generated__/BookingDetail_booking.graphql'; import type { MobileBookingDetail_booking as MobileBookingDetailType } from '../../MobileBookingHeader/__generated__/MobileBookingDetail_booking.graphql'; type BookingType = MobileBookingDetailType | BookingDetailType; type Props = { +booking: BookingType, onSetFAQSection: (isUrgent: boolean, isPastBooking: boolean) => void, }; export const isUrgentBooking = ( isPastBooking: ?boolean, departureTime: ?Date, ) => { const timeDelta = departureTime ? differenceInHours(departureTime, new Date()) : null; const isUrgent = timeDelta !== null && URGENCY_THRESHOLD > timeDelta; return isPastBooking === false && isUrgent; }; export const getDepartureTimeByType = (booking: BookingType) => { let date = null; if (booking.type === bookingTypes.ONE_WAY) { date = booking.trip?.departure?.time; } if (booking.type === bookingTypes.RETURN) { date = booking.outbound?.departure?.time; } if (booking.type === bookingTypes.MULTICITY) { date = booking.start?.time; } return date ? new Date(date) : null; }; export const updateFAQSection = (props: Props) => { const { booking } = props; const { isPastBooking } = booking; const departureTime = getDepartureTimeByType(booking); if (isPastBooking !== null && isPastBooking !== undefined) { const isUrgent = isUrgentBooking(isPastBooking, departureTime); props.onSetFAQSection(isUrgent, isPastBooking); } };