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 (
);
});
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;