From b85c996c154736ad76cc150895fe4c4079e48ba6 Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 26 Jun 2023 13:44:14 +0800 Subject: [PATCH] Bugfix image updating (#680) cache expire after 24h --- modules/desktop/electron/libs/tea-dir.ts | 12 +++++++++++- modules/desktop/package.json | 2 +- .../src/components/package-card/bg-image.svelte | 5 +++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/desktop/electron/libs/tea-dir.ts b/modules/desktop/electron/libs/tea-dir.ts index c26b823..279d9bb 100644 --- a/modules/desktop/electron/libs/tea-dir.ts +++ b/modules/desktop/electron/libs/tea-dir.ts @@ -182,7 +182,17 @@ export async function cacheImage(url: string): Promise { log.info("creating folder:", folderPath); await mkdirp(folderPath); - if (!fs.existsSync(imagePath)) { + let expired = false; + const exists = await fs.existsSync(imagePath); + if (exists) { + const stats = await fs.statSync(imagePath); + const now = new Date(); + const diff = now.getTime() - stats.birthtime.getTime(); + const hours = Math.floor(diff / 1000 / 60 / 60); + expired = hours > 24; + } + + if (!exists || expired) { try { await downloadImage(url, imagePath); log.info("Image downloaded and cached:", imagePath); diff --git a/modules/desktop/package.json b/modules/desktop/package.json index 268e2d8..b7a6f47 100644 --- a/modules/desktop/package.json +++ b/modules/desktop/package.json @@ -1,6 +1,6 @@ { "name": "tea", - "version": "0.2.29", + "version": "0.2.30", "private": true, "description": "tea gui app", "author": "tea.xyz", diff --git a/modules/desktop/src/components/package-card/bg-image.svelte b/modules/desktop/src/components/package-card/bg-image.svelte index 8753008..3316165 100644 --- a/modules/desktop/src/components/package-card/bg-image.svelte +++ b/modules/desktop/src/components/package-card/bg-image.svelte @@ -39,9 +39,10 @@ const getCache = async () => { if (pkg.image_512_url) { - loadImage(pkg.image_512_url, true).finally(async () => { + const ts = +new Date(); + loadImage(pkg.image_512_url + `?ts=${ts}`, true).finally(async () => { const nextImage = await packagesStore.cachePkgImage(pkg); - loadImage(nextImage, true); + loadImage(nextImage + `?ts=${ts}`, true); }); } };