import React, { useState, useCallback, useEffect, } from 'react'; import PropTypes from 'prop-types'; import loggerFactory from '@alias/logger'; import { withUnstatedContainers } from '../UnstatedUtils'; import AppContainer from '../../services/AppContainer'; import RevisionRenderer from '../Page/RevisionRenderer'; const logger = loggerFactory('growi:cli:CustomSidebar'); const SidebarNotFound = () => { return (
Create /Sidebar page
); }; const CustomSidebar = (props) => { const { appContainer } = props; const { apiGet } = appContainer; const [isMounted, setMounted] = useState(false); const [markdown, setMarkdown] = useState(); const growiRenderer = appContainer.getRenderer('sidebar'); // TODO: refactor with SWR const fetchDataAndRenderHtml = useCallback(async() => { let page = null; try { const result = await apiGet('/pages.get', { path: '/Sidebar' }); page = result.page; } catch (e) { logger.warn(e.message); return; } finally { setMounted(true); } setMarkdown(page.revision.body); }, [apiGet]); useEffect(() => { fetchDataAndRenderHtml(); }, [fetchDataAndRenderHtml]); return ( <>

Custom Sidebar

{ isMounted && markdown == null && } {/* eslint-disable-next-line react/no-danger */} { markdown != null && (
) } ); }; CustomSidebar.propTypes = { appContainer: PropTypes.instanceOf(AppContainer).isRequired, }; /** * Wrapper component for using unstated */ const CustomSidebarWrapper = withUnstatedContainers(CustomSidebar, [AppContainer]); export default CustomSidebarWrapper;