UNPKG

@kiwicom/smart-faq

Version:

105 lines (93 loc) 2.62 kB
// @flow import * as React from 'react'; import { withRouter } from 'react-router-dom'; import type { ContextRouter } from 'react-router-dom'; import { TextLink } from '@kiwicom/orbit-components'; import Translate from '@kiwicom/nitro/lib/components/Translate'; import { Consumer as IntlConsumer } from '@kiwicom/nitro/lib/services/intl/context'; import type { Context as Intl } from '@kiwicom/nitro/lib/services/intl/context'; import LogContext from '@kiwicom/nitro/lib/services/log/context'; import { GuaranteeChatContext } from '../../../shared/context/GuaranteeChatInfo'; import { UserContext } from '../../context/User'; import { SelectedBooking } from '../../context/SelectedBooking'; import type { onLogin, User } from '../../../types'; import { events } from '../../../const/events'; import type { log } from '../../../const/events'; type ContainerProps = {| ...ContextRouter, |}; type Props = {| ...ContainerProps, intl: Intl, onLogin: onLogin, user: ?User, log: log, simpleToken: ?string, isChatActive: boolean, onDisplayAll: () => void, |}; class SelectAnotherBookingLink extends React.Component<Props> { onClick = e => { const { isChatActive, intl, simpleToken, user, onLogin, onDisplayAll, log, } = this.props; e.preventDefault(); if ( isChatActive && // eslint-disable-next-line no-alert !window.confirm( intl.translate(__('smartfaq.guarantee_chat.confirmation')), ) ) { return; } log(events.BOOKING_SELECT, {}); if (simpleToken && !user) { onLogin(); } else { onDisplayAll(); } }; render() { return ( <TextLink onClick={this.onClick} type="secondary" size="small" href="" dataTest="btn-other-bookings" > <Translate t="smartfaq.select_another_booking" /> </TextLink> ); } } const WrappedLink = (props: ContainerProps) => { const { isChatActive } = React.useContext(GuaranteeChatContext); const { onDisplayAll } = React.useContext(SelectedBooking); const { simpleToken, user, onLogin } = React.useContext(UserContext); const { log } = React.useContext(LogContext); return ( <IntlConsumer> {intl => ( <SelectAnotherBookingLink {...props} intl={intl} onLogin={onLogin} simpleToken={simpleToken} user={user} log={log} onDisplayAll={onDisplayAll} isChatActive={isChatActive} /> )} </IntlConsumer> ); }; export default withRouter(WrappedLink);