import React, { FC, useState, useCallback, } from 'react'; import { useTranslation } from 'next-i18next'; import DropdownToggle from 'reactstrap/es/DropdownToggle'; import Popover from 'reactstrap/es/Popover'; import PopoverBody from 'reactstrap/es/PopoverBody'; import UncontrolledTooltip from 'reactstrap/es/UncontrolledTooltip'; import { useSWRxBookmarkedUsers } from '~/stores/bookmark'; import { useIsGuestUser } from '~/stores/context'; import { BookmarkFolderMenu } from './Bookmarks/BookmarkFolderMenu'; import UserPictureList from './User/UserPictureList'; import styles from './BookmarkButtons.module.scss'; interface Props { pageId: string, isBookmarked?: boolean, bookmarkCount: number, hideTotalNumber?: boolean, } export const BookmarkButtons: FC = (props: Props) => { const { t } = useTranslation(); const { pageId, isBookmarked, bookmarkCount, hideTotalNumber, } = props; const [isBookmarkFolderMenuOpen, setBookmarkFolderMenuOpen] = useState(false); const [isBookmarkUsersPopoverOpen, setBookmarkUsersPopoverOpen] = useState(false); const { data: isGuestUser } = useIsGuestUser(); const { data: bookmarkedUsers, isLoading: isLoadingBookmarkedUsers } = useSWRxBookmarkedUsers(isBookmarkUsersPopoverOpen ? pageId : null); const unbookmarkHandler = () => { setBookmarkFolderMenuOpen(false); }; const toggleBookmarkFolderMenuHandler = () => { setBookmarkFolderMenuOpen(v => !v); }; const toggleBookmarkUsersPopover = () => { setBookmarkUsersPopoverOpen(v => !v); }; const getTooltipMessage = useCallback(() => { if (isGuestUser) { return 'Not available for guest'; } return 'tooltip.bookmark'; }, [isGuestUser]); if (pageId == null) { return <>; } return (
{t(getTooltipMessage())} { !hideTotalNumber && ( <> { isLoadingBookmarkedUsers && } { !isLoadingBookmarkedUsers && bookmarkedUsers != null && ( <> { bookmarkedUsers.length > 0 ? (
) : t('No users have bookmarked yet') } ) }
) }
); };