From 73e745e62034158e022246d9f685caabbaa0f5d8 Mon Sep 17 00:00:00 2001 From: Elliot DeNolf Date: Mon, 11 Mar 2024 22:00:26 -0400 Subject: [PATCH] fix(plugin-cloud): purge cache for all sizes --- .../plugin-cloud/src/hooks/uploadCache.ts | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/plugin-cloud/src/hooks/uploadCache.ts b/packages/plugin-cloud/src/hooks/uploadCache.ts index 195fa57ddf..ee07b9306f 100644 --- a/packages/plugin-cloud/src/hooks/uploadCache.ts +++ b/packages/plugin-cloud/src/hooks/uploadCache.ts @@ -8,8 +8,13 @@ interface Args { endpoint: string } +type GenericUpload = { + url?: string + sizes?: Record +} + export const getCacheUploadsAfterChangeHook = - ({ endpoint }: Args): CollectionAfterChangeHook => + ({ endpoint }: Args): CollectionAfterChangeHook => async ({ doc, operation, req }) => { if (!req || !process.env.PAYLOAD_CLOUD_CACHE_KEY) return doc @@ -37,12 +42,17 @@ export const getCacheUploadsAfterDeleteHook = } type PurgeRequest = { - doc: any + doc: GenericUpload endpoint: string operation: string req: PayloadRequest } +type GenericUpload = { + url?: string + sizes?: Record +} + async function purge({ doc, endpoint, operation, req }: PurgeRequest) { const filePath = doc.url @@ -56,11 +66,20 @@ async function purge({ doc, endpoint, operation, req }: PurgeRequest) { return } + const filepaths = [filePath] + if (Object.keys(doc.sizes).length) { + const urls = Object.values(doc.sizes) + .map((size) => size?.url) + .filter(Boolean) + filepaths.push(...urls) + } + const body = { cacheKey: process.env.PAYLOAD_CLOUD_CACHE_KEY, - filepath: doc.url, + filepaths, projectID: process.env.PAYLOAD_CLOUD_PROJECT_ID, } + req.payload.logger.debug({ filepath: doc.url, msg: 'Attempting to purge cache',