From 606a33117f95c041afc2c60356057bd94c81f919 Mon Sep 17 00:00:00 2001 From: Nell Hardcastle Date: Tue, 11 Aug 2026 14:17:10 -0700 Subject: [PATCH] fix(app): Use filename and path to identify deleted file apollo cache updates --- .../scripts/dataset/mutations/delete-file.jsx | 37 ++++++------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/packages/openneuro-app/src/scripts/dataset/mutations/delete-file.jsx b/packages/openneuro-app/src/scripts/dataset/mutations/delete-file.jsx index c972ccb15..cc1b54f75 100644 --- a/packages/openneuro-app/src/scripts/dataset/mutations/delete-file.jsx +++ b/packages/openneuro-app/src/scripts/dataset/mutations/delete-file.jsx @@ -9,15 +9,6 @@ const DELETE_FILE = gql` } ` -const DELETED_FILE_FRAGMENT = gql` - fragment DeletedFile on DatasetFile { - id - key - filename - directory - } -` - /** * Given a file object, path/filename for deletion, and a list of currently loaded files, filter any that will be deleted and orphan directories */ @@ -52,28 +43,22 @@ const DeleteFile = ({ datasetId, path, filename }) => { cache.modify({ id: `Draft:${datasetId}`, fields: { - files(cachedFiles) { + files(cachedFiles, { readField }) { + // DatasetFile is not normalized (keyFields: false) so read the + // fields we need via readField instead of cache ids + const cachedFileObjects = cachedFiles.map((f) => ({ + filename: readField("filename", f), + directory: readField("directory", f), + })) // Filter any removed files from the Draft.files cache - const cachedFileObjects = cachedFiles.map((f) => - cache.readFragment({ - id: cache.identify(f), - fragment: DELETED_FILE_FRAGMENT, - }) - ) - const remainingFiles = cachedFiles.filter((f) => { - // Get the cache key for each file we have loaded - const file = cache.readFragment({ - id: cache.identify(f), - fragment: DELETED_FILE_FRAGMENT, - }) - return fileCacheDeleteFilter( - file, + return cachedFiles.filter((_, index) => + fileCacheDeleteFilter( + cachedFileObjects[index], path, filename, cachedFileObjects, ) - }) - return remainingFiles + ) }, }, })