tidy up restart

This commit is contained in:
proddy
2024-08-30 11:09:05 +02:00
parent d2f6f8203f
commit 117b55cc16
10 changed files with 72 additions and 186 deletions

View File

@@ -1,13 +1,13 @@
import { type FC, useEffect, useRef, useState } from 'react';
import * as SystemApi from 'api/system';
import { readHardwareStatus } from 'api/system';
import { useRequest } from 'alova/client';
import { FormLoader } from 'components';
import { useI18nContext } from 'i18n/i18n-react';
const RESTART_TIMEOUT = 2 * 60 * 1000; // 2 minutes
const POLL_INTERVAL = 1000; // every 1 second
const POLL_INTERVAL = 2000; // every 2 seconds
export interface RestartMonitorProps {
message?: string;
@@ -16,10 +16,12 @@ export interface RestartMonitorProps {
const RestartMonitor: FC<RestartMonitorProps> = ({ message }) => {
const [failed, setFailed] = useState<boolean>(false);
const [timeoutId, setTimeoutId] = useState<NodeJS.Timeout>();
const { LL } = useI18nContext();
const timeoutAt = useRef(new Date().getTime() + RESTART_TIMEOUT);
const { send } = useRequest(SystemApi.readSystemStatus);
const { send } = useRequest(readHardwareStatus, { immediate: false });
const poll = useRef(async () => {
try {
@@ -35,7 +37,7 @@ const RestartMonitor: FC<RestartMonitorProps> = ({ message }) => {
});
useEffect(() => {
void poll.current();
setTimeoutId(setTimeout(poll.current, POLL_INTERVAL));
}, []);
useEffect(() => () => timeoutId && clearTimeout(timeoutId), [timeoutId]);

View File

@@ -52,24 +52,12 @@ const SystemStatus = () => {
const { me } = useContext(AuthenticatedContext);
const [confirmRestart, setConfirmRestart] = useState<boolean>(false);
const [processing, setProcessing] = useState<boolean>(false);
const [restarting, setRestarting] = useState<boolean>();
const { send: restartCommand } = useRequest(SystemApi.restart(), {
immediate: false
});
const { send: partitionCommand } = useRequest(SystemApi.partition(), {
immediate: false
});
const { send: factoryPartitionCommand } = useRequest(
SystemApi.factoryPartition(),
{
immediate: false
}
);
const {
data: data,
send: loadData,
@@ -208,7 +196,6 @@ const SystemStatus = () => {
value ? theme.palette.success.main : theme.palette.info.main;
const restart = async () => {
setProcessing(true);
await restartCommand()
.then(() => {
setRestarting(true);
@@ -218,37 +205,6 @@ const SystemStatus = () => {
})
.finally(() => {
setConfirmRestart(false);
setProcessing(false);
});
};
const partition = async () => {
setProcessing(true);
await partitionCommand()
.then(() => {
setRestarting(true);
})
.catch((error: Error) => {
toast.error(error.message);
})
.finally(() => {
setConfirmRestart(false);
setProcessing(false);
});
};
const factoryPartition = async () => {
setProcessing(true);
await factoryPartitionCommand()
.then(() => {
setRestarting(true);
})
.catch((error: Error) => {
toast.error(error.message);
})
.finally(() => {
setConfirmRestart(false);
setProcessing(false);
});
};
@@ -265,38 +221,14 @@ const SystemStatus = () => {
startIcon={<CancelIcon />}
variant="outlined"
onClick={() => setConfirmRestart(false)}
disabled={processing}
color="secondary"
>
{LL.CANCEL()}
</Button>
{data.has_loader && (
<Button
startIcon={<PowerSettingsNewIcon />}
variant="outlined"
onClick={factoryPartition}
disabled={processing}
color="warning"
>
EMS-ESP Boot
</Button>
)}
{data.has_partition && (
<Button
startIcon={<PowerSettingsNewIcon />}
variant="outlined"
onClick={partition}
disabled={processing}
color="warning"
>
Partition
</Button>
)}
<Button
startIcon={<PowerSettingsNewIcon />}
variant="outlined"
onClick={restart}
disabled={processing}
color="error"
>
{LL.RESTART()}