diff --git a/modules/desktop/electron/libs/package.ts b/modules/desktop/electron/libs/package.ts index efb03c6..ac3e028 100644 --- a/modules/desktop/electron/libs/package.ts +++ b/modules/desktop/electron/libs/package.ts @@ -3,10 +3,12 @@ import { mkdirp } from "mkdirp"; import fs from "fs"; import log from "./logger"; import { getTeaPath } from "./tea-dir"; -import { Packages } from "../../src/libs/types"; +import { GUIPackage, Packages } from "../../src/libs/types"; +import { isDev } from "./auto-updater"; const pkgsFilePath = path.join(getTeaPath(), "tea.xyz/gui/pkgs.json"); const pkgsFolder = path.join(getTeaPath(), "tea.xyz/gui"); +const dev = isDev(); export async function writePackageCache(pkgs: Packages) { try { @@ -29,13 +31,19 @@ export async function loadPackageCache(): Promise { log.info(`loading package cache from ${pkgsFilePath}`); const pkgData = fs.readFileSync(pkgsFilePath); const pkgs = JSON.parse(pkgData.toString()) as Packages; - if (pkgs?.packages) { // Remove any temporary properties that may have been added to the package (like installation progress) for (const [key, value] of Object.entries(pkgs.packages)) { const { install_progress_percentage, isUninstalling, synced, displayState, ...rest } = value; - pkgs.packages[key] = rest; + pkgs.packages[key] = rest as GUIPackage; + // possible user deletes cache files + delete pkgs.packages[key].cached_image_url; + if (rest.image_added_at) { + const prefix = `https://gui.tea.xyz/${dev ? "dev" : "prod"}/${rest.full_name}`; + pkgs.packages[key].image_128_url = `${prefix}/128x128.webp`; + pkgs.packages[key].image_512_url = `${prefix}/512x512.webp`; + } } } return pkgs; diff --git a/modules/desktop/electron/libs/tea-dir.ts b/modules/desktop/electron/libs/tea-dir.ts index ae62daa..c26b823 100644 --- a/modules/desktop/electron/libs/tea-dir.ts +++ b/modules/desktop/electron/libs/tea-dir.ts @@ -163,18 +163,24 @@ async function downloadImage(url: string, imagePath: string): Promise { const response = await fetch(url); await new Promise((resolve, reject) => { const fileStream = fs.createWriteStream(imagePath); - response.body.pipe(fileStream); - fileStream.on("finish", () => resolve()); - fileStream.on("error", (error) => reject(error)); + if (response.status == 200) { + response.body.pipe(fileStream); + fileStream.on("finish", () => resolve()); + fileStream.on("error", (error) => reject(error)); + } else { + reject(new Error(`Failed to download image: ${url}`)); + } }); } export async function cacheImage(url: string): Promise { const imageFolder = path.join(getGuiPath(), "cached_images"); - const imageName = path.basename(url); - const imagePath = path.join(imageFolder, imageName); - - await mkdirp(imageFolder); + const pkgFilePath = url.split("gui.tea.xyz")[1]; + const imagePath = path.join(imageFolder, pkgFilePath); + const fileName = path.basename(imagePath); + const folderPath = imagePath.replace(fileName, ""); + log.info("creating folder:", folderPath); + await mkdirp(folderPath); if (!fs.existsSync(imagePath)) { try { diff --git a/modules/desktop/package.json b/modules/desktop/package.json index 585d6ed..9593fd4 100644 --- a/modules/desktop/package.json +++ b/modules/desktop/package.json @@ -1,6 +1,6 @@ { "name": "tea", - "version": "0.2.27", + "version": "0.2.28", "private": true, "description": "tea gui app", "author": "tea.xyz", diff --git a/modules/desktop/src/components/featured-packages/featured-packages.svelte b/modules/desktop/src/components/featured-packages/featured-packages.svelte deleted file mode 100644 index a8f3ffe..0000000 --- a/modules/desktop/src/components/featured-packages/featured-packages.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - ({ - title: pkg.full_name, - subTitle: pkg.maintainer || "", - imageUrl: pkg.thumb_image_url, - link: `/packages/${pkg.slug}` - }))} -/> diff --git a/modules/desktop/src/components/package-card/bg-image.svelte b/modules/desktop/src/components/package-card/bg-image.svelte index 313fd53..8753008 100644 --- a/modules/desktop/src/components/package-card/bg-image.svelte +++ b/modules/desktop/src/components/package-card/bg-image.svelte @@ -1,6 +1,5 @@