import TransferListener from '@/components/server/TransferListener'; import React, { useEffect, useState } from 'react'; import { useRouteMatch } from 'react-router-dom'; import NavigationBar from '@/components/NavigationBar'; import WebsocketHandler from '@/components/server/WebsocketHandler'; import { ServerContext } from '@/state/server'; import { CSSTransition } from 'react-transition-group'; import Spinner from '@/components/elements/Spinner'; import { ServerError } from '@/components/elements/ScreenBlock'; import { httpErrorToHuman } from '@/api/http'; import { useStoreState } from 'easy-peasy'; import SubNavigation from '@/components/elements/SubNavigation'; import InstallListener from '@/components/server/InstallListener'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'; import { useLocation } from 'react-router'; import { NavigationLinks, NavigationRouter } from '@/blueprint/extends/routers/ServerRouter'; import BeforeSubNavigation from '@/blueprint/components/Navigation/SubNavigation/BeforeSubNavigation'; import AdditionalServerItems from '@/blueprint/components/Navigation/SubNavigation/AdditionalServerItems'; import AfterSubNavigation from '@/blueprint/components/Navigation/SubNavigation/AfterSubNavigation'; export default () => { const match = useRouteMatch<{ id: string }>(); const location = useLocation(); const rootAdmin = useStoreState((state) => state.user.data!.rootAdmin); const [error, setError] = useState(''); const id = ServerContext.useStoreState((state) => state.server.data?.id); const uuid = ServerContext.useStoreState((state) => state.server.data?.uuid); const inConflictState = ServerContext.useStoreState((state) => state.server.inConflictState); const serverId = ServerContext.useStoreState((state) => state.server.data?.internalId); const getServer = ServerContext.useStoreActions((actions) => actions.server.getServer); const clearServerState = ServerContext.useStoreActions((actions) => actions.clearServerState); useEffect( () => () => { clearServerState(); }, [] ); useEffect(() => { setError(''); getServer(match.params.id).catch((error) => { console.error(error); setError(httpErrorToHuman(error)); }); return () => { clearServerState(); }; }, [match.params.id]); return ( {!uuid || !id ? ( error ? ( ) : ( ) ) : ( <>
{rootAdmin && ( // eslint-disable-next-line react/jsx-no-target-blank )}
)}
); };