芝麻web文件管理V1.00
编辑当前文件:/home/freeclou/app.optimyar.com/backend/.cache/admin/src/containers/SettingsPage/index.js
/** * * SettingsPage * */ // NOTE TO PLUGINS DEVELOPERS: // If you modify this file you also need to update the documentation accordingly // Here's the file: strapi/docs/3.0.0-beta.x/plugin-development/frontend-settings-api.md // IF THE DOC IS NOT UPDATED THE PULL REQUEST WILL NOT BE MERGED import React, { memo, useMemo, useState } from 'react'; import { BackHeader, useGlobalContext, LeftMenuList, LoadingIndicatorPage, } from 'strapi-helper-plugin'; import { Switch, Redirect, Route, useParams, useHistory } from 'react-router-dom'; import { useIntl } from 'react-intl'; import HeaderSearch from '../../components/HeaderSearch'; import PageTitle from '../../components/PageTitle'; import { useSettingsMenu } from '../../hooks'; import { retrieveGlobalLinks } from '../../utils'; import SettingsSearchHeaderProvider from '../SettingsHeaderSearchContextProvider'; import { ApplicationDetailLink, MenuWrapper, SettingDispatcher, StyledLeftMenu, Wrapper, } from './components'; import { createRoute, createPluginsLinksRoutes, makeUniqueRoutes, getSectionsToDisplay, routes, } from './utils'; function SettingsPage() { const { settingId } = useParams(); const { goBack } = useHistory(); const { settingsBaseURL, plugins } = useGlobalContext(); const [headerSearchState, setShowHeaderSearchState] = useState({ show: false, label: '' }); const { isLoading, menu } = useSettingsMenu(); const { formatMessage } = useIntl(); const pluginsGlobalLinks = useMemo(() => retrieveGlobalLinks(plugins), [plugins]); const appRoutes = useMemo(() => { return makeUniqueRoutes( routes.map(({ to, Component, exact }) => createRoute(Component, to, exact)) ); }, []); // Create all the
that needs to be created by the plugins // For instance the upload plugin needs to create a
const globalSectionCreatedRoutes = useMemo(() => { const routesToCreate = pluginsGlobalLinks.map(({ to, Component, exact }) => createRoute(Component, to, exact) ); return makeUniqueRoutes(routesToCreate); }, [pluginsGlobalLinks]); // Same here for the plugins sections const pluginsLinksRoutes = useMemo(() => { return createPluginsLinksRoutes(menu); }, [menu]); // Only display accessible sections const filteredMenu = useMemo(() => getSectionsToDisplay(menu), [menu]); const toggleHeaderSearch = label => setShowHeaderSearchState(prev => { if (prev.show) { return { show: false, label: '', }; } return { label, show: true }; }); // Since the useSettingsMenu hook can make API calls in order to check the links permissions // We need to add a loading state to prevent redirecting the user while permissions are being checked if (isLoading) { return
; } if (!settingId) { return
; } const settingTitle = formatMessage({ id: 'app.components.LeftMenuLinkContainer.settings' }); return (
{filteredMenu.map(item => { return
; })}
{appRoutes} {globalSectionCreatedRoutes} {pluginsLinksRoutes}
{headerSearchState.show &&
}
); } export default memo(SettingsPage);