import React, { FC, useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { UncontrolledTooltip, Popover, PopoverBody } from 'reactstrap'; import AppContainer from '~/client/services/AppContainer'; import { IUser } from '../interfaces/user'; import { withUnstatedContainers } from './UnstatedUtils'; import UserPictureList from './User/UserPictureList'; type LikeButtonsProps = { hideTotalNumber?: boolean, sumOfLikers: number, likers: IUser[], isGuestUser?: boolean, isLiked?: boolean, onLikeClicked?: ()=>void, } const LikeButtons: FC = (props: LikeButtonsProps) => { const { t } = useTranslation(); const [isPopoverOpen, setIsPopoverOpen] = useState(false); const togglePopover = () => { setIsPopoverOpen(!isPopoverOpen); }; const { hideTotalNumber, isGuestUser, isLiked, sumOfLikers, onLikeClicked, } = props; const getTooltipMessage = useCallback(() => { if (isGuestUser) { return 'Not available for guest'; } if (isLiked) { return 'tooltip.cancel_like'; } return 'tooltip.like'; }, [isGuestUser, isLiked]); return (
{t(getTooltipMessage())} { !hideTotalNumber && ( <>
{props.likers?.length ? : t('No users have liked this yet.')}
) }
); }; /** * Wrapper component for using unstated */ const LikeButtonsUnstatedWrapper = withUnstatedContainers(LikeButtons, [AppContainer]); // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types const LikeButtonsWrapper = (props) => { return ; }; export default LikeButtonsWrapper;