From f14eb91d2a8b8731fc46e8149aba08132d44c511 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Mon, 4 Mar 2024 11:38:20 +0100 Subject: [PATCH] :bug: (fileUpload) Fix files deletion on result delete --- .../fileUpload/api/generateUploadUrl.ts | 2 +- packages/lib/s3/deleteFilesFromBucket.ts | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/apps/viewer/src/features/fileUpload/api/generateUploadUrl.ts b/apps/viewer/src/features/fileUpload/api/generateUploadUrl.ts index 3bcce2c67..64b552918 100644 --- a/apps/viewer/src/features/fileUpload/api/generateUploadUrl.ts +++ b/apps/viewer/src/features/fileUpload/api/generateUploadUrl.ts @@ -172,7 +172,7 @@ export const generateUploadUrl = publicProcedure filePath, maxFileSize: fileUploadBlock.options && 'sizeLimit' in fileUploadBlock.options - ? fileUploadBlock.options.sizeLimit + ? (fileUploadBlock.options.sizeLimit as string) : env.NEXT_PUBLIC_BOT_FILE_UPLOAD_MAX_SIZE, }) diff --git a/packages/lib/s3/deleteFilesFromBucket.ts b/packages/lib/s3/deleteFilesFromBucket.ts index aaed76a59..177934461 100644 --- a/packages/lib/s3/deleteFilesFromBucket.ts +++ b/packages/lib/s3/deleteFilesFromBucket.ts @@ -22,10 +22,22 @@ export const deleteFilesFromBucket = async ({ const bucket = env.S3_BUCKET - return minioClient.removeObjects( - bucket, - urls - .filter((url) => url.includes(env.S3_ENDPOINT as string)) - .map((url) => url.split(`/${bucket}/`)[1]) + const keys = urls.reduce( + (keys, url) => [ + ...keys, + ...addKeyIfIncludesPublicCustomDomain(url), + ...addKeyIfIncludesDefaultEndpoint(url, bucket), + ], + [] ) + + return minioClient.removeObjects(bucket, keys) } + +const addKeyIfIncludesPublicCustomDomain = (url: string) => + env.S3_PUBLIC_CUSTOM_DOMAIN && url.includes(env.S3_PUBLIC_CUSTOM_DOMAIN) + ? [url.split(env.S3_PUBLIC_CUSTOM_DOMAIN + '/')[1]] + : [] + +const addKeyIfIncludesDefaultEndpoint = (url: string, bucket: string) => + url.includes(env.S3_ENDPOINT as string) ? [url.split(`/${bucket}/`)[1]] : []