Skip to content

Commit fade902

Browse files
authored
Better fw update cache handling (#1617)
2 parents 56c3290 + e072fc7 commit fade902

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

gui/src/hooks/app.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,12 @@ export function useProvideAppContext(): AppContext {
7575
});
7676

7777
useEffect(() => {
78-
fetchCurrentFirmwareRelease().then((res) => setCurrentFirmwareRelease(res));
78+
const interval = setInterval(() => {
79+
fetchCurrentFirmwareRelease().then((res) => setCurrentFirmwareRelease(res));
80+
}, 1000);
81+
return () => {
82+
clearInterval(interval);
83+
};
7984
}, []);
8085

8186
return {

gui/src/hooks/cache.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,13 @@ export async function cacheWrap(
5555
orDefault: () => Promise<string | null>,
5656
ttl: number | undefined
5757
) {
58-
const realItem = await store.get(key);
58+
const realItem = await cacheGet(key);
5959
if (!realItem) {
6060
const defaultItem = await orDefault();
6161
await cacheSet(key, defaultItem, ttl);
6262
return defaultItem;
6363
} else {
64-
return (await cacheGet(key))!;
64+
return realItem;
6565
}
6666
}
6767

gui/src/hooks/firmware-update.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ const todaysRange = (deployData: [number, Date][]): number => {
3636
};
3737

3838
const checkUserCanUpdate = async (url: string, fwVersion: string) => {
39-
if (!url) return true;
4039
const deployDataJson = JSON.parse(
4140
(await cacheWrap(
4241
`firmware-${fwVersion}-deploy`,
@@ -47,7 +46,7 @@ const checkUserCanUpdate = async (url: string, fwVersion: string) => {
4746
60 * 60 * 1000
4847
)) || 'null'
4948
);
50-
if (!deployDataJson) return true;
49+
if (!deployDataJson) return false;
5150

5251
const deployData = (
5352
Object.entries(deployDataJson).map(([key, val]) => {
@@ -90,17 +89,22 @@ export async function fetchCurrentFirmwareRelease(): Promise<FirmwareRelease | n
9089
for (const release of releases) {
9190
const fwAsset = firstAsset(release.assets, 'BOARD_SLIMEVR-firmware.bin');
9291
const fw12Asset = firstAsset(release.assets, 'BOARD_SLIMEVR_V1_2-firmware.bin');
93-
if (!release.assets || (!fwAsset && !fw12Asset) /* || release.prerelease */)
92+
const deployAsset = firstAsset(release.assets, 'deploy.json');
93+
if (
94+
!release.assets ||
95+
!deployAsset ||
96+
(!fwAsset && !fw12Asset) ||
97+
release.prerelease
98+
)
9499
continue;
95100

96101
let version = release.tag_name;
97102
if (version.charAt(0) === 'v') {
98103
version = version.substring(1);
99104
}
100105

101-
const deployAsset = firstAsset(release.assets, 'deploy.json');
102106
const userCanUpdate = await checkUserCanUpdate(
103-
deployAsset?.browser_download_url,
107+
deployAsset.browser_download_url,
104108
version
105109
);
106110
processedReleses.push({

0 commit comments

Comments
 (0)