import React from 'react'; import PropTypes from 'prop-types'; import { UncontrolledTooltip, Popover, PopoverBody } from 'reactstrap'; import { withTranslation } from 'react-i18next'; import UserPictureList from './User/UserPictureList'; import { withUnstatedContainers } from './UnstatedUtils'; import { toastError } from '~/client/util/apiNotification'; import AppContainer from '~/client/services/AppContainer'; import PageContainer from '~/client/services/PageContainer'; class LikeButtons extends React.Component { constructor(props) { super(props); this.state = { isPopoverOpen: false, }; this.togglePopover = this.togglePopover.bind(this); this.handleClick = this.handleClick.bind(this); } togglePopover() { this.setState(prevState => ({ ...prevState, isPopoverOpen: !prevState.isPopoverOpen, })); } async handleClick() { const { appContainer, pageContainer } = this.props; const { isGuestUser } = appContainer; if (isGuestUser) { return; } try { pageContainer.toggleLike(); } catch (err) { toastError(err); } } render() { const { appContainer, pageContainer, t } = this.props; const { isGuestUser } = appContainer; const { state: { likers, sumOfLikers, isLiked }, } = pageContainer; return (
{isGuestUser && ( {t('Not available for guest')} )}
{likers.length ? : t('No users have liked this yet.')}
); } } /** * Wrapper component for using unstated */ const LikeButtonsWrapper = withUnstatedContainers(LikeButtons, [AppContainer, PageContainer]); LikeButtons.propTypes = { appContainer: PropTypes.instanceOf(AppContainer).isRequired, pageContainer: PropTypes.instanceOf(PageContainer).isRequired, t: PropTypes.func.isRequired, size: PropTypes.string, }; export default withTranslation()(LikeButtonsWrapper);