import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import { apiv3Get } from '~/client/util/apiv3-client'; import { IPageHasId } from '~/interfaces/page'; import { useCurrentPagePath } from '~/stores/context'; import { useTimelineOptions } from '~/stores/renderer'; import RevisionLoader from './Page/RevisionLoader'; import PaginationWrapper from './PaginationWrapper'; import styles from './PageTimeline.module.scss'; export const PageTimeline = (): JSX.Element => { const [activePage, setActivePage] = useState(1); const [totalPageItems, setTotalPageItems] = useState(0); const [limit, setLimit] = useState(10); const [pages, setPages] = useState(null); const { data: currentPagePath } = useCurrentPagePath(); const { t } = useTranslation(); const { data: rendererOptions } = useTimelineOptions(); const handlePage = useCallback(async(selectedPage: number) => { if (currentPagePath == null) { return } const res = await apiv3Get('/pages/list', { path: currentPagePath, selectedPage }); setTotalPageItems(res.data.totalCount); setPages(res.data.pages); setLimit(res.data.limit); setActivePage(selectedPage); }, [currentPagePath]); useEffect(() => { handlePage(1); }, [handlePage]); if (rendererOptions == null) { return <>; } if (pages == null || pages.length === 0) { return (
{/* eslint-disable-next-line react/no-danger */}

{t('custom_navigation.no_page_list')}

); } return (
{ pages.map((page) => { return (
{page.path}
); }) }
); };