import React, { FC, useState } from 'react'; import { Types } from 'mongoose'; import { UncontrolledTooltip, Popover, PopoverBody } from 'reactstrap'; import { useTranslation } from 'react-i18next'; import UserPictureList from './User/UserPictureList'; import { toastError } from '~/client/util/apiNotification'; import { useIsGuestUser } from '~/stores/context'; import { useSWRxBookmarksInfo } from '~/stores/bookmarks'; import { apiv3Put } from '~/client/util/apiv3-client'; interface Props { pageId: Types.ObjectId } const BookmarkButton: FC = (props: Props) => { const { t } = useTranslation(); const { pageId } = props; const [isPopoverOpen, setIsPopoverOpen] = useState(false); const { data: isGuestUser } = useIsGuestUser(); const { data: bookmarksInfo, mutate } = useSWRxBookmarksInfo(pageId); const isBookmarked = bookmarksInfo?.isBookmarked != null ? bookmarksInfo.isBookmarked : false; const sumOfBookmarks = bookmarksInfo?.sumOfBookmarks != null ? bookmarksInfo.sumOfBookmarks : 0; const bookmarkedUsers = bookmarksInfo?.bookmarkedUsers != null ? bookmarksInfo.bookmarkedUsers : []; const togglePopover = () => { setIsPopoverOpen(!isPopoverOpen); }; const handleClick = async() => { if (isGuestUser) { return; } try { const res = await apiv3Put('/bookmarks', { pageId, bool: !isBookmarked }); if (res) { mutate(); } } catch (err) { toastError(err); } }; return (
{isGuestUser && ( {t('Not available for guest')} )}
{bookmarkedUsers.length ? : t('No users have bookmarked yet')}
); }; export default BookmarkButton;