import React, { useCallback, useEffect, useState } from 'react'; import { DevidedPagePath } from '@growi/core'; import { useTranslation } from 'react-i18next'; import { UncontrolledTooltip } from 'reactstrap'; import { toastError } from '~/client/util/apiNotification'; import { apiv3Get } from '~/client/util/apiv3-client'; import { IPageHasId } from '~/interfaces/page'; import { useCurrentUser, useIsGuestUser } from '~/stores/context'; import loggerFactory from '~/utils/logger'; const logger = loggerFactory('growi:BookmarkList'); // TODO: Remove pagination and apply scrolling (not infinity) const ACTIVE_PAGE = 1; type Props = { pages: IPageHasId[] } const BookmarksItem = (props: Props) => { const { pages } = props; const generateBookmarkedPageList = pages.map((page) => { const dPagePath = new DevidedPagePath(page.path, false, true); const { latter: pageTitle, former: formerPagePath } = dPagePath; return (
  • {pageTitle}

  • { formerPagePath || '/' }
    ); }); return ( <> ); }; const Bookmarks = () : JSX.Element => { const { t } = useTranslation(); const { data: currentUser } = useCurrentUser(); const { data: isGuestUser } = useIsGuestUser(); const [pages, setPages] = useState([]); const getMyBookmarkList = useCallback(async() => { // TODO: Remove pagination and apply scrolling (not infinity) const page = ACTIVE_PAGE; try { const res = await apiv3Get(`/bookmarks/${currentUser?._id}`, { page }); const { paginationResult } = res.data; setPages(paginationResult.docs.map((page) => { return { ...page.page, }; })); } catch (error) { logger.error('failed to fetch data', error); toastError(error, 'Error occurred in bookmark page list'); } }, [currentUser]); useEffect(() => { getMyBookmarkList(); }, [getMyBookmarkList]); const renderBookmarkList = () => { if (pages.length === 0) { return (

    { t('No bookmarks yet') }

    ); } return ; }; return ( <>

    {t('Bookmarks')}

    { isGuestUser ? (

    { t('Not available for guest') }

    ) : ( { renderBookmarkList } ) } ); }; export default Bookmarks;