import React, { type JSX, useCallback, useEffect, useState } from 'react'; import type { IPageHasId } from '@growi/core'; import { apiv3Get } from '~/client/util/apiv3-client'; import { toastError } from '~/client/util/toastr'; import loggerFactory from '~/utils/logger'; import { PageListItemS } from '../PageList/PageListItemS'; import PaginationWrapper from '../PaginationWrapper'; const logger = loggerFactory('growi:RecentCreated'); type RecentCreatedProps = { userId: string; }; export const RecentCreated = (props: RecentCreatedProps): JSX.Element => { const { userId } = props; const [pages, setPages] = useState([]); const [activePage, setActivePage] = useState(1); const [totalPages, setTotalPages] = useState(0); const [pagingLimit, setPagingLimit] = useState(10); const getMyRecentCreatedList = useCallback( async (selectedPage) => { const page = selectedPage; try { const res = await apiv3Get(`/users/${userId}/recent`, { page }); const { totalCount, pages, limit } = res.data; setPages(pages); setActivePage(selectedPage); setTotalPages(totalCount); setPagingLimit(limit); } catch (error) { logger.error('failed to fetch data', error); toastError(error); } }, [userId], ); useEffect(() => { getMyRecentCreatedList(1); }, [getMyRecentCreatedList]); const handlePage = useCallback( async (selectedPage) => { await getMyRecentCreatedList(selectedPage); }, [getMyRecentCreatedList], ); return (
); };