From ba570da22e928fe77199b3ba009694a282feeffa Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Mon, 5 May 2025 15:29:45 +0300 Subject: [PATCH] stop accidentally deleting the image while compressing --- src/lib/media/manip.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/media/manip.ts b/src/lib/media/manip.ts index 98ffe8a024..ff5b71acec 100644 --- a/src/lib/media/manip.ts +++ b/src/lib/media/manip.ts @@ -26,11 +26,10 @@ export async function compressIfNeeded( img: PickerImage, maxSize: number = 1000000, ): Promise { - const origUri = `file://${img.path}` if (img.size < maxSize) { return img } - const resizedImage = await doResize(origUri, { + const resizedImage = await doResize(normalizePath(img.path), { width: img.width, height: img.height, mode: 'stretch', @@ -184,6 +183,7 @@ async function doResize( let minQualityPercentage = 0 let maxQualityPercentage = 101 // exclusive let newDataUri + const intermediateUris = [] while (maxQualityPercentage - minQualityPercentage > 1) { const qualityPercentage = Math.round( @@ -198,6 +198,8 @@ async function doResize( }, ) + intermediateUris.push(resizeRes.uri) + const fileInfo = await getInfoAsync(resizeRes.uri) if (!fileInfo.exists) { throw new Error( @@ -217,8 +219,12 @@ async function doResize( } else { maxQualityPercentage = qualityPercentage } + } - safeDeleteAsync(resizeRes.uri) + for (const intermediateUri of intermediateUris) { + if (newDataUri?.path !== normalizePath(intermediateUri)) { + safeDeleteAsync(intermediateUri) + } } if (newDataUri) {