import React, { useState } from 'react';
import PropTypes from 'prop-types';
import { withTranslation } from 'react-i18next';
import Page from './PageList/Page';
import { withUnstatedContainers } from './UnstatedUtils';
import AppContainer from '~/client/services/AppContainer';
import PageContainer from '~/client/services/PageContainer';
import { useSWRxPageList } from '~/stores/page';
import PaginationWrapper from './PaginationWrapper';
const PageList = (props) => {
const { appContainer, pageContainer, t } = props;
const { path } = pageContainer.state;
const [activePage, setActivePage] = useState(1);
const { data: pagesListData, error: errors } = useSWRxPageList(path, activePage);
function setPageNumber(selectedPageNumber) {
setActivePage(selectedPageNumber);
}
if (errors != null) {
return (
{/* eslint-disable-next-line react/no-array-index-key */}
{errors.map((error, index) =>
{error.message}
)}
);
}
if (pagesListData == null) {
return (
);
}
const liClasses = props.liClasses.join(' ');
const pageList = pagesListData.items.map(page => (
));
if (pageList.length === 0) {
return (
{/* eslint-disable-next-line react/no-danger */}
{t('custom_navigation.no_page_list')}
);
}
if (appContainer.config.disableLinkSharing) {
return (
{/* eslint-disable-next-line react/no-danger */}
{t('custom_navigation.link_sharing_is_disabled')}
);
}
return (
);
};
const PageListWrapper = withUnstatedContainers(PageList, [AppContainer, PageContainer]);
const PageListTranslation = withTranslation()(PageListWrapper);
PageList.propTypes = {
t: PropTypes.func.isRequired, // i18next
appContainer: PropTypes.instanceOf(AppContainer),
pageContainer: PropTypes.instanceOf(PageContainer),
liClasses: PropTypes.arrayOf(PropTypes.string),
};
PageList.defaultProps = {
liClasses: ['mb-3'],
};
export default PageListTranslation;