@kiwicom/smart-faq
Version:
62 lines (49 loc) • 1.46 kB
JavaScript
// @flow
import * as React from 'react';
import { graphql } from 'react-relay';
import idx from 'idx';
import BookingRenderer from '../relay/BookingRenderer';
import BookingError from './BookingError';
import BookingDetail from './BookingDetail';
import BookingNotFound from './BookingNotFound';
import BookingLoader from './BookingLoader';
import type { NearestBookingQueryResponse as QueryResponseType } from './__generated__/NearestBookingQuery.graphql';
type Props = {||};
type RenderState = {
props: ?QueryResponseType,
error: ?Error,
};
const query = graphql`
query NearestBookingQuery {
nearestBooking {
...BookingDetail_booking
...GuaranteeNeededResolver_booking
}
}
`;
class NearestBooking extends React.Component<Props> {
renderBooking = (renderState: RenderState) => {
let content = null;
const booking = idx(renderState.props, _ => _.nearestBooking);
if (booking) {
content = <BookingDetail booking={booking} />;
} else if (!booking) {
content = <BookingNotFound />;
}
if (!renderState.props) {
content = <BookingLoader />;
}
if (renderState && renderState.error) {
content = <BookingError />;
}
return (
<div style={{ height: '100%', backgroundColor: '#f5f7f9' }}>
{content}
</div>
);
};
render() {
return <BookingRenderer query={query} render={this.renderBooking} />;
}
}
export default NearestBooking;