From 21067b6ee83fd8cf40d3eec3953dc06923b267a7 Mon Sep 17 00:00:00 2001 From: ewsgit Date: Fri, 24 Apr 2026 13:15:19 +0100 Subject: [PATCH] resize local icons --- .../uk.ewsgit.files/electron/package.json | 3 +++ .../uk.ewsgit.files/electron/src/main.ts | 19 +++++++++++++++---- bun.lock | 3 +++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/applications/uk.ewsgit.files/electron/package.json b/applications/uk.ewsgit.files/electron/package.json index 9a91624..8a3a263 100644 --- a/applications/uk.ewsgit.files/electron/package.json +++ b/applications/uk.ewsgit.files/electron/package.json @@ -23,5 +23,8 @@ "package": "electron-forge package", "make": "tsc && electron-forge make", "publish": "electron-forge publish" + }, + "dependencies": { + "sharp": "^0.34.5" } } \ No newline at end of file diff --git a/applications/uk.ewsgit.files/electron/src/main.ts b/applications/uk.ewsgit.files/electron/src/main.ts index 16409ae..df9360c 100644 --- a/applications/uk.ewsgit.files/electron/src/main.ts +++ b/applications/uk.ewsgit.files/electron/src/main.ts @@ -1,6 +1,7 @@ import path from "node:path"; import { app, BrowserWindow, ipcMain, session } from "electron"; import { promises as fs } from "node:fs"; +import sharp from "sharp"; async function createWindow() { const window = new BrowserWindow({ @@ -88,6 +89,19 @@ app.whenReady().then(async () => { try { const itemStats = await fs.lstat(resolvedPath); + let thumbnail: Buffer | undefined = undefined; + + if (getFileType(p) === "image") { + thumbnail = await new Promise((resolve) => { + sharp(resolvedPath) + .toFormat("webp") + .resize(thumbnailSize) + .toBuffer((_, buffer) => { + resolve(buffer); + }); + }); + } + return { status: "ok", data: { @@ -96,10 +110,7 @@ app.whenReady().then(async () => { // TODO: implement sharing first shared: false, size: itemStats.size, - thumbnail: - getFileType(p) === "image" - ? `data:image/${path.extname(resolvedPath)};base64,${await fs.readFile(resolvedPath, { encoding: "base64" })}` - : undefined, + thumbnail: thumbnail ? `data:image/${path.extname(resolvedPath)};base64,${thumbnail}` : undefined, }, }; } catch (_) { diff --git a/bun.lock b/bun.lock index 15640bf..364796e 100644 --- a/bun.lock +++ b/bun.lock @@ -128,6 +128,9 @@ "applications/uk.ewsgit.files/electron": { "name": "uk-ewsgit-files-electron", "version": "0.0.1", + "dependencies": { + "sharp": "^0.34.5", + }, "devDependencies": { "@electron-forge/cli": "^7.11.1", "@electron-forge/maker-deb": "^7.11.1", -- 2.51.2