36 lines
937 B
TypeScript
Raw Normal View History

import React, { ComponentType, useContext } from 'react';
2019-12-07 13:28:52 +02:00
import { FormattedMessage as Message, MessageDescriptor } from 'react-intl';
import Context, { AuthContext } from './Context';
2019-12-07 13:28:52 +02:00
interface Props {
2020-05-24 02:08:24 +03:00
isAvailable?: (context: AuthContext) => boolean;
payload?: Record<string, any>;
label: MessageDescriptor;
2019-12-07 13:28:52 +02:00
}
2020-05-24 02:08:24 +03:00
const RejectionLink: ComponentType<Props> = ({ isAvailable, payload, label }) => {
const context = useContext(Context);
2019-12-07 13:28:52 +02:00
2020-05-24 02:08:24 +03:00
if (isAvailable && !isAvailable(context)) {
// TODO: if want to properly support multiple links, we should control
// the dividers ' | ' rendered from factory too
return null;
}
2020-05-24 02:08:24 +03:00
return (
<a
href="#"
onClick={(event) => {
event.preventDefault();
2020-05-24 02:08:24 +03:00
context.reject(payload);
}}
>
<Message {...label} />
</a>
);
};
2019-12-07 13:28:52 +02:00
export default RejectionLink;