From bb0282db8694c3f452e564e4bc0f5ec87a274bb7 Mon Sep 17 00:00:00 2001 From: adamsilverstein Date: Wed, 4 Mar 2026 18:21:18 +0700 Subject: [PATCH 1/3] Block Editor: Separate server-side mediaUpload key Nested ExperimentalBlockEditorProvider instances (e.g. from BlockPreview) overwrite the upload-media store's real server-side mediaUpload with the queue interceptor, causing uploadItem() to loop endlessly. Store the original function under __unstableMediaUploadServer so it survives nesting. --- packages/block-editor/src/components/provider/index.js | 8 +++++++- .../src/components/provider/use-media-upload-settings.js | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/block-editor/src/components/provider/index.js b/packages/block-editor/src/components/provider/index.js index a4ebeed9ab2459..a31fae9524ddb0 100644 --- a/packages/block-editor/src/components/provider/index.js +++ b/packages/block-editor/src/components/provider/index.js @@ -148,10 +148,16 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider( const settings = useMemo( () => { if ( isClientSideMediaEnabled && _settings?.mediaUpload ) { - // Create a new object so that the original props.settings.mediaUpload is not modified. + // Preserve the original server-side function. If _settings already + // has __unstableMediaUploadServer (from a parent provider), reuse it; + // otherwise use _settings.mediaUpload (the real function at root level). + const serverMediaUpload = + _settings.__unstableMediaUploadServer || + _settings.mediaUpload; return { ..._settings, mediaUpload: mediaUpload.bind( null, registry ), + __unstableMediaUploadServer: serverMediaUpload, }; } return _settings; diff --git a/packages/block-editor/src/components/provider/use-media-upload-settings.js b/packages/block-editor/src/components/provider/use-media-upload-settings.js index 7c00c145d27a72..45f7757d93dc44 100644 --- a/packages/block-editor/src/components/provider/use-media-upload-settings.js +++ b/packages/block-editor/src/components/provider/use-media-upload-settings.js @@ -13,7 +13,9 @@ import { useMemo } from '@wordpress/element'; function useMediaUploadSettings( settings = {} ) { return useMemo( () => ( { - mediaUpload: settings.mediaUpload, + mediaUpload: + settings.__unstableMediaUploadServer || + settings.mediaUpload, mediaSideload: settings.mediaSideload, maxUploadFileSize: settings.maxUploadFileSize, allowedMimeTypes: settings.allowedMimeTypes, From 6cf585a6a587e68cd3f84a7ef037b099b8a01c2e Mon Sep 17 00:00:00 2001 From: adamsilverstein Date: Wed, 4 Mar 2026 18:31:29 +0700 Subject: [PATCH 2/3] Fix Prettier formatting in useMediaUploadSettings --- .../src/components/provider/use-media-upload-settings.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/block-editor/src/components/provider/use-media-upload-settings.js b/packages/block-editor/src/components/provider/use-media-upload-settings.js index 45f7757d93dc44..60b5aadfcbfd96 100644 --- a/packages/block-editor/src/components/provider/use-media-upload-settings.js +++ b/packages/block-editor/src/components/provider/use-media-upload-settings.js @@ -13,9 +13,7 @@ import { useMemo } from '@wordpress/element'; function useMediaUploadSettings( settings = {} ) { return useMemo( () => ( { - mediaUpload: - settings.__unstableMediaUploadServer || - settings.mediaUpload, + mediaUpload: settings.__unstableMediaUploadServer || settings.mediaUpload, mediaSideload: settings.mediaSideload, maxUploadFileSize: settings.maxUploadFileSize, allowedMimeTypes: settings.allowedMimeTypes, From ec6796418d6d10db1245af773728d4a4c7298db0 Mon Sep 17 00:00:00 2001 From: Andrew Serong <14988353+andrewserong@users.noreply.github.com> Date: Thu, 5 Mar 2026 15:27:55 +1100 Subject: [PATCH 3/3] Fix linting issue --- .../src/components/provider/use-media-upload-settings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/block-editor/src/components/provider/use-media-upload-settings.js b/packages/block-editor/src/components/provider/use-media-upload-settings.js index 60b5aadfcbfd96..49ae91ede72c0b 100644 --- a/packages/block-editor/src/components/provider/use-media-upload-settings.js +++ b/packages/block-editor/src/components/provider/use-media-upload-settings.js @@ -13,7 +13,8 @@ import { useMemo } from '@wordpress/element'; function useMediaUploadSettings( settings = {} ) { return useMemo( () => ( { - mediaUpload: settings.__unstableMediaUploadServer || settings.mediaUpload, + mediaUpload: + settings.__unstableMediaUploadServer || settings.mediaUpload, mediaSideload: settings.mediaSideload, maxUploadFileSize: settings.maxUploadFileSize, allowedMimeTypes: settings.allowedMimeTypes,