11import React , { memo } from 'react' ;
22import { ServerContext } from '@/state/server' ;
33import Can from '@/components/elements/Can' ;
4- import ContentContainer from '@/components/elements/ContentContainer' ;
5- import tw from 'twin.macro' ;
64import ServerContentBlock from '@/components/elements/ServerContentBlock' ;
75import isEqual from 'react-fast-compare' ;
86import Spinner from '@/components/elements/Spinner' ;
@@ -11,18 +9,26 @@ import Console from '@/components/server/console/Console';
119import StatGraphs from '@/components/server/console/StatGraphs' ;
1210import PowerButtons from '@/components/server/console/PowerButtons' ;
1311import ServerDetailsBlock from '@/components/server/console/ServerDetailsBlock' ;
12+ import { Alert } from '@/components/elements/alert' ;
1413
1514export type PowerAction = 'start' | 'stop' | 'restart' | 'kill' ;
1615
1716const ServerConsoleContainer = ( ) => {
1817 const name = ServerContext . useStoreState ( ( state ) => state . server . data ! . name ) ;
1918 const description = ServerContext . useStoreState ( ( state ) => state . server . data ! . description ) ;
20- const isInstalling = ServerContext . useStoreState ( ( state ) => state . server . data ! . isInstalling ) ;
19+ const isInstalling = ServerContext . useStoreState ( ( state ) => state . server . isInstalling ) ;
2120 const isTransferring = ServerContext . useStoreState ( ( state ) => state . server . data ! . isTransferring ) ;
2221 const eggFeatures = ServerContext . useStoreState ( ( state ) => state . server . data ! . eggFeatures , isEqual ) ;
2322
2423 return (
2524 < ServerContentBlock title = { 'Console' } className = { 'flex flex-col gap-2 sm:gap-4' } >
25+ { ( isInstalling || isTransferring ) && (
26+ < Alert type = { 'warning' } >
27+ { isInstalling
28+ ? 'This server is currently running its installation process and most actions are unavailable.'
29+ : 'This server is currently being transferred to another node and all actions are unavailable.' }
30+ </ Alert >
31+ ) }
2632 < div className = { 'grid grid-cols-4 gap-4' } >
2733 < div className = { 'hidden sm:block sm:col-span-2 lg:col-span-3 pr-4' } >
2834 < h1 className = { 'font-header text-2xl text-gray-50 leading-relaxed line-clamp-1' } > { name } </ h1 >
@@ -41,25 +47,6 @@ const ServerConsoleContainer = () => {
4147 </ Spinner . Suspense >
4248 </ div >
4349 < ServerDetailsBlock className = { 'col-span-4 lg:col-span-1 order-last lg:order-none' } />
44- { isInstalling ? (
45- < div css = { tw `mt-4 rounded bg-yellow-500 p-3` } >
46- < ContentContainer >
47- < p css = { tw `text-sm text-yellow-900` } >
48- This server is currently running its installation process and most actions are
49- unavailable.
50- </ p >
51- </ ContentContainer >
52- </ div >
53- ) : isTransferring ? (
54- < div css = { tw `mt-4 rounded bg-yellow-500 p-3` } >
55- < ContentContainer >
56- < p css = { tw `text-sm text-yellow-900` } >
57- This server is currently being transferred to another node and all actions are
58- unavailable.
59- </ p >
60- </ ContentContainer >
61- </ div >
62- ) : null }
6350 </ div >
6451 < div className = { 'grid grid-cols-1 md:grid-cols-3 gap-2 sm:gap-4' } >
6552 < Spinner . Suspense >
0 commit comments