import { memo } from 'react'; import isEqual from 'react-fast-compare'; import { Alert } from '@/components/elements/alert'; import Can from '@/components/elements/Can'; import ServerContentBlock from '@/components/elements/ServerContentBlock'; import Spinner from '@/components/elements/Spinner'; import Console from '@/components/server/console/Console'; import PowerButtons from '@/components/server/console/PowerButtons'; import ServerDetailsBlock from '@/components/server/console/ServerDetailsBlock'; import StatGraphs from '@/components/server/console/StatGraphs'; import Features from '@feature/Features'; import { ServerContext } from '@/state/server'; export type PowerAction = 'start' | 'stop' | 'restart' | 'kill'; function ServerConsoleContainer() { const name = ServerContext.useStoreState(state => state.server.data!.name); const description = ServerContext.useStoreState(state => state.server.data!.description); const isInstalling = ServerContext.useStoreState(state => state.server.isInstalling); const isTransferring = ServerContext.useStoreState(state => state.server.data!.isTransferring); const eggFeatures = ServerContext.useStoreState(state => state.server.data!.eggFeatures, isEqual); const isNodeUnderMaintenance = ServerContext.useStoreState(state => state.server.data!.isNodeUnderMaintenance); return ( {(isNodeUnderMaintenance || isInstalling || isTransferring) && ( {isNodeUnderMaintenance ? 'The node of this server is currently under maintenance and all actions are unavailable.' : isInstalling ? 'This server is currently running its installation process and most actions are unavailable.' : 'This server is currently being transferred to another node and all actions are unavailable.'} )}

{name}

{description}

); } export default memo(ServerConsoleContainer, isEqual);