import React from 'react'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; import AppContainer from '~/client/services/AppContainer'; import PageContainer from '~/client/services/PageContainer'; import { apiv3Get } from '~/client/util/apiv3-client'; import RevisionLoader from './Page/RevisionLoader'; import PaginationWrapper from './PaginationWrapper'; import { withUnstatedContainers } from './UnstatedUtils'; class PageTimeline extends React.Component { constructor(props) { super(props); this.state = { activePage: 1, totalPageItems: 0, limit: null, // TODO: remove after when timeline is implemented with React and inject data with props pages: this.props.pages, }; this.handlePage = this.handlePage.bind(this); } async handlePage(selectedPage) { const { appContainer, pageContainer } = this.props; const { path } = pageContainer.state; const page = selectedPage; const res = await apiv3Get('/pages/list', { path, page }); const totalPageItems = res.data.totalCount; const pages = res.data.pages; const pagingLimit = res.data.limit; this.setState({ activePage: selectedPage, totalPageItems, pages, limit: pagingLimit, }); } componentWillMount() { const { appContainer } = this.props; // initialize GrowiRenderer this.growiRenderer = appContainer.getRenderer('timeline'); } async componentDidMount() { await this.handlePage(1); this.setState({ activePage: 1, }); } render() { const { t } = this.props; const { pages } = this.state; 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}
); }) }
); } } PageTimeline.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, pageContainer: PropTypes.instanceOf(PageContainer).isRequired, pages: PropTypes.arrayOf(PropTypes.object), }; const PageTimelineWrapperFC = (props) => { const { t } = useTranslation(); return ; }; /** * Wrapper component for using unstated */ const PageTimelineWrapper = withUnstatedContainers(PageTimelineWrapperFC, [AppContainer, PageContainer]); export default PageTimelineWrapper;