import PropTypes from 'prop-types'; import React from 'react'; import { FormattedMessage as Message, MessageDescriptor } from 'react-intl'; import { User } from 'app/components/user'; import { userShape } from 'app/components/user/User'; interface Props { isAvailable?: (context: Context) => boolean; payload?: { [key: string]: any }; label: MessageDescriptor; } export type RejectionLinkProps = Props; interface Context { reject: (payload: { [key: string]: any } | undefined) => void; user: User; } function RejectionLink(props: Props, context: Context) { if (props.isAvailable && !props.isAvailable(context)) { // TODO: if want to properly support multiple links, we should control // the dividers ' | ' rendered from factory too return null; } return ( { event.preventDefault(); context.reject(props.payload); }} > ); } RejectionLink.contextTypes = { reject: PropTypes.func.isRequired, user: userShape, }; export default RejectionLink;