import React, { FC, useState, useCallback, } from 'react'; import { useTranslation } from 'next-i18next'; import { UncontrolledTooltip, Popover, PopoverBody, DropdownToggle, } from 'reactstrap'; import { useSWRBookmarkInfo } from '~/stores/bookmark'; import { useIsGuestUser } from '~/stores/context'; import { useSWRxCurrentPage } from '~/stores/page'; import { IUser } from '../interfaces/user'; import BookmarkFolderMenu from './Bookmarks/BookmarkFolderMenu'; import UserPictureList from './User/UserPictureList'; import styles from './BookmarkButtons.module.scss'; interface Props { bookmarkedUsers?: IUser[] hideTotalNumber?: boolean } const BookmarkButtons: FC = (props: Props) => { const { t } = useTranslation(); const { data } = useSWRxCurrentPage(); const { data: bookmarkInfo } = useSWRBookmarkInfo(data?._id); const { bookmarkedUsers, hideTotalNumber, } = props; const [isPopoverOpen, setIsPopoverOpen] = useState(false); const { data: isGuestUser } = useIsGuestUser(); const togglePopover = () => { setIsPopoverOpen(!isPopoverOpen); }; const getTooltipMessage = useCallback(() => { if (isGuestUser) { return 'Not available for guest'; } if (bookmarkInfo?.isBookmarked) { return 'tooltip.cancel_bookmark'; } return 'tooltip.bookmark'; }, [isGuestUser, bookmarkInfo]); return (
{t(getTooltipMessage())} { !hideTotalNumber && ( <> { bookmarkedUsers != null && (
{bookmarkedUsers.length ? : t('No users have bookmarked yet')}
) } ) }
); }; export default BookmarkButtons;