Skip to content

Commit 87a8238

Browse files
committed
Correctly render suspended server in dashboard listing; closes pterodactyl#2613
1 parent ff64220 commit 87a8238

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

resources/scripts/components/dashboard/ServerRow.tsx

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,9 @@ const StatusIndicatorBox = styled(GreyRowBox)<{ $status: ServerPowerState | unde
4141

4242
export default ({ server, className }: { server: Server; className?: string }) => {
4343
const interval = useRef<number>(null);
44-
const [ stats, setStats ] = useState<ServerStats | null>(null);
4544
const [ statsError, setStatsError ] = useState(false);
45+
const [ isSuspended, setIsSuspended ] = useState(server.isSuspended);
46+
const [ stats, setStats ] = useState<ServerStats | null>(null);
4647

4748
const getStats = () => {
4849
setStatsError(false);
@@ -55,6 +56,14 @@ export default ({ server, className }: { server: Server; className?: string }) =
5556
};
5657

5758
useEffect(() => {
59+
setIsSuspended(stats?.isSuspended || server.isSuspended);
60+
}, [ stats?.isSuspended, server.isSuspended ]);
61+
62+
useEffect(() => {
63+
// Don't waste a HTTP request if there is nothing important to show to the user because
64+
// the server is suspended.
65+
if (isSuspended) return;
66+
5867
getStats().then(() => {
5968
// @ts-ignore
6069
interval.current = setInterval(() => getStats(), 20000);
@@ -63,7 +72,7 @@ export default ({ server, className }: { server: Server; className?: string }) =
6372
return () => {
6473
interval.current && clearInterval(interval.current);
6574
};
66-
}, []);
75+
}, [ isSuspended ]);
6776

6877
const alarms = { cpu: false, memory: false, disk: false };
6978
if (stats) {
@@ -101,9 +110,13 @@ export default ({ server, className }: { server: Server; className?: string }) =
101110
</p>
102111
</div>
103112
<div css={tw`hidden col-span-7 lg:col-span-4 sm:flex items-baseline justify-center`}>
104-
{!stats ?
105-
!statsError ?
106-
<Spinner size={'small'}/>
113+
{(!stats || isSuspended) ?
114+
isSuspended ?
115+
<div css={tw`flex-1 text-center`}>
116+
<span css={tw`bg-red-500 rounded px-2 py-1 text-red-100 text-xs`}>
117+
{server.isSuspended ? 'Suspended' : 'Connection Error'}
118+
</span>
119+
</div>
107120
:
108121
server.isInstalling ?
109122
<div css={tw`flex-1 text-center`}>
@@ -112,11 +125,7 @@ export default ({ server, className }: { server: Server; className?: string }) =
112125
</span>
113126
</div>
114127
:
115-
<div css={tw`flex-1 text-center`}>
116-
<span css={tw`bg-red-500 rounded px-2 py-1 text-red-100 text-xs`}>
117-
{server.isSuspended ? 'Suspended' : 'Connection Error'}
118-
</span>
119-
</div>
128+
<Spinner size={'small'}/>
120129
:
121130
<React.Fragment>
122131
<div css={tw`flex-1 flex md:ml-4 sm:flex hidden justify-center`}>

0 commit comments

Comments
 (0)