import React from 'react'; import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import { createSlug, stringify } from '../../util/urlHelpers'; import { NamedLink } from '../../components'; import css from './TransactionPanel.css'; export const HEADING_ENQUIRED = 'enquired'; export const HEADING_PAYMENT_PENDING = 'pending-payment'; export const HEADING_PAYMENT_EXPIRED = 'payment-expired'; export const HEADING_REQUESTED = 'requested'; export const HEADING_ACCEPTED = 'accepted'; export const HEADING_DECLINED = 'declined'; export const HEADING_CANCELED = 'canceled'; export const HEADING_DELIVERED = 'deliveded'; const createListingLink = (listingId, label, listingDeleted, searchParams = {}, className = '') => { if (!listingDeleted) { const params = { id: listingId, slug: createSlug(label) }; const to = { search: stringify(searchParams) }; return ( {label} ); } else { return ; } }; const ListingDeletedInfoMaybe = props => { return props.listingDeleted ? (

) : null; }; const HeadingCustomer = props => { const { className, id, values, listingDeleted } = props; return (

); }; const HeadingCustomerWithSubtitle = props => { const { className, id, values, subtitleId, subtitleValues, children, listingDeleted } = props; return (

{children}
); }; const CustomerBannedInfoMaybe = props => { return props.isCustomerBanned ? (

) : null; }; const HeadingProvider = props => { const { className, id, values, isCustomerBanned, children } = props; return (

{children}
); }; // Functional component as a helper to choose and show Order or Sale heading info: // title, subtitle, and message const PanelHeading = props => { const { className, rootClassName, panelHeadingState, customerName, providerName, listingId, listingTitle, listingDeleted, isCustomerBanned, } = props; const isCustomer = props.transactionRole === 'customer'; const defaultRootClassName = isCustomer ? css.headingOrder : css.headingSale; const titleClasses = classNames(rootClassName || defaultRootClassName, className); const listingLink = createListingLink(listingId, listingTitle, listingDeleted); switch (panelHeadingState) { case HEADING_ENQUIRED: return isCustomer ? ( ) : ( ); case HEADING_PAYMENT_PENDING: return isCustomer ? ( ) : (

); case HEADING_PAYMENT_EXPIRED: return isCustomer ? ( ) : ( ); case HEADING_REQUESTED: return isCustomer ? ( {!listingDeleted ? (

) : null}
) : ( {!isCustomerBanned ? (

) : null}
); case HEADING_ACCEPTED: return isCustomer ? ( ) : ( ); case HEADING_DECLINED: return isCustomer ? ( ) : ( ); case HEADING_CANCELED: return isCustomer ? ( ) : ( ); case HEADING_DELIVERED: return isCustomer ? ( ) : ( ); default: console.warning('Unknown state given to panel heading.'); return null; } }; export default PanelHeading;