SubscribeButton.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React, { FC } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { UncontrolledTooltip } from 'reactstrap';
  4. import { SubscriptionStatusType } from '~/interfaces/subscription';
  5. type Props = {
  6. isGuestUser?: boolean,
  7. status?: SubscriptionStatusType,
  8. onClick?: () => Promise<void>,
  9. };
  10. const SubscribeButton: FC<Props> = (props: Props) => {
  11. const { t } = useTranslation();
  12. const { isGuestUser, status } = props;
  13. const isSubscribing = status === SubscriptionStatusType.SUBSCRIBE;
  14. const buttonClass = `${isSubscribing ? 'active' : ''} ${isGuestUser ? 'disabled' : ''}`;
  15. const iconClass = isSubscribing === false ? 'fa fa-eye-slash' : 'fa fa-eye';
  16. return (
  17. <>
  18. <button
  19. type="button"
  20. id="subscribe-button"
  21. onClick={props.onClick}
  22. className={`btn btn-subscribe border-0 ${buttonClass}`}
  23. >
  24. <i className={iconClass}></i>
  25. </button>
  26. {isGuestUser && (
  27. <UncontrolledTooltip placement="top" target="subscribe-button" fade={false}>
  28. {t('Not available for guest')}
  29. </UncontrolledTooltip>
  30. )}
  31. </>
  32. );
  33. };
  34. export default SubscribeButton;