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 (
); }; 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 ( <> { isMounted && markdown == null &&