- Fehler behoben, bei dem das Firmware-Update nach wenigen Sekunden vorzeitig beendet wurde - Fortschrittsanzeige über Redux-Slice `firmwareProgressSlice` korrekt umgesetzt - Thunk `startFirmwareUpdateThunk` korrekt eingebunden und verwendet - UI zeigt stabile 5-minütige Progressbar wie erwartet
32 lines
865 B
TypeScript
32 lines
865 B
TypeScript
// redux/thunks/startFirmwareUpdateThunk.ts
|
|
import { AppDispatch } from "../store";
|
|
import {
|
|
setProgress,
|
|
setIsUpdating,
|
|
} from "@/redux/slices/firmwareProgressSlice";
|
|
|
|
export const startFirmwareUpdateThunk =
|
|
(slot: number) => async (dispatch: AppDispatch) => {
|
|
dispatch(setIsUpdating(true));
|
|
dispatch(setProgress(0));
|
|
|
|
const totalDuration = 5 * 60 * 1000;
|
|
const intervalMs = 1000;
|
|
const steps = totalDuration / intervalMs;
|
|
let currentStep = 0;
|
|
|
|
const interval = setInterval(() => {
|
|
currentStep++;
|
|
const percent = Math.min((currentStep / steps) * 100, 100);
|
|
dispatch(setProgress(percent));
|
|
|
|
if (currentStep >= steps) {
|
|
clearInterval(interval);
|
|
dispatch(setProgress(100));
|
|
setTimeout(() => {
|
|
dispatch(setIsUpdating(false));
|
|
}, 500);
|
|
}
|
|
}, intervalMs);
|
|
};
|