@kiwicom/smart-faq
Version:
105 lines (93 loc) • 2.62 kB
JavaScript
// @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);