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;