getting the firmware list so i know what to upgrade to, upgrade button won't display if firmwares are not yet loaded

This commit is contained in:
Carter 2025-05-22 15:10:49 -06:00
parent a8feca1d75
commit 1ca8c94a79
2 changed files with 28 additions and 3 deletions

View file

@ -17,7 +17,7 @@ import {
// import { createStyles, makeStyles, Theme } from "@material-ui/core/styles"; // import { createStyles, makeStyles, Theme } from "@material-ui/core/styles";
import UpdateIcon from "@mui/icons-material/Update"; import UpdateIcon from "@mui/icons-material/Update";
import { useDeviceAPI, useFirmwareAPI, usePrevious, useSnackbar } from "hooks"; import { useDeviceAPI, useFirmwareAPI, usePrevious, useSnackbar } from "hooks";
import { Device, latestFirmwareVersion, Upgrade } from "models"; import { Device, Firmware, latestFirmwareVersion, Upgrade } from "models";
import moment from "moment"; import moment from "moment";
import { getContextKeys, getContextTypes } from "pbHelpers/Context"; import { getContextKeys, getContextTypes } from "pbHelpers/Context";
import { useGlobalState } from "providers"; import { useGlobalState } from "providers";
@ -50,14 +50,16 @@ export default function UpgradeDevice(props: Props) {
const deviceAPI = useDeviceAPI(); const deviceAPI = useDeviceAPI();
const { success, error } = useSnackbar(); const { success, error } = useSnackbar();
const firmwareAPI = useFirmwareAPI(); const firmwareAPI = useFirmwareAPI();
const [{ firmware }] = useGlobalState(); // const [{ firmware }] = useGlobalState();
const prevFirmware = usePrevious(firmware);
const { device } = props; const { device } = props;
const prevDevice = usePrevious(device); const prevDevice = usePrevious(device);
const [open, setOpen] = useState<boolean>(false); const [open, setOpen] = useState<boolean>(false);
const prevOpen = usePrevious(open); const prevOpen = usePrevious(open);
const [upgrade, setUpgrade] = useState<Upgrade>(Upgrade.create()); const [upgrade, setUpgrade] = useState<Upgrade>(Upgrade.create());
const [gettingStatus, setGettingStatus] = useState(0); const [gettingStatus, setGettingStatus] = useState(0);
const [firmware, setFirmware] = useState<Map<string, Firmware>>(new Map())
const [firmwareLoading, setFirmwareLoading] = useState(false)
const prevFirmware = usePrevious(firmware);
const progress = useCallback(() => { const progress = useCallback(() => {
return upgrade.status.progress; return upgrade.status.progress;
@ -75,11 +77,32 @@ export default function UpgradeDevice(props: Props) {
); );
}; };
useEffect(() => {
if (firmwareLoading) return
// if (firmware.size > 0) return
setFirmwareLoading(true)
firmwareAPI.getAllLatestFirmware().then(resp => {
let versions: Map<string, Firmware> = new Map();
if (resp && resp.data && resp.data.firmware) {
resp.data.firmware.forEach((raw: any) => {
let firmware = Firmware.any(raw);
let key = firmware.settings.platform + ":" + firmware.settings.channel;
versions.set(key, firmware);
});
}
// dispatch({ key: "firmware", value: versions });
setFirmware(versions)
}).finally(() => {
setFirmwareLoading(false)
})
}, [])
const upgradeVersion = () => { const upgradeVersion = () => {
return upgrade.settings.version; return upgrade.settings.version;
}; };
const available = () => { const available = () => {
if (firmware.size < 1) return false
return currentFirmware() !== latestFirmware(); return currentFirmware() !== latestFirmware();
}; };

View file

@ -8,6 +8,8 @@ export function latestFirmwareVersion(
channel: pond.UpgradeChannel channel: pond.UpgradeChannel
): string { ): string {
const firmware = versions.get(platform + ":" + channel); const firmware = versions.get(platform + ":" + channel);
// console.log(platform + ":" + channel)
// console.log(versions)
if (firmware) { if (firmware) {
return firmware.settings.version; return firmware.settings.version;
} }