From af0f9012704cf1d116a0bd952a6e9833900e873c Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Thu, 9 Oct 2025 16:52:35 -0400 Subject: [PATCH 1/3] task: Disable the "Your phone" media provider for GutenbergKit Sourcing media from "your phone" while using a phone's mobile app is less useful and possibly confusing. --- .../packages/external-media/src/shared/sources/index.js | 8 +++++++- .../external-media/src/shared/utils/is-gutenberg-kit.js | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 projects/packages/external-media/src/shared/utils/is-gutenberg-kit.js diff --git a/projects/packages/external-media/src/shared/sources/index.js b/projects/packages/external-media/src/shared/sources/index.js index 1be2749a5256c..f37add263e294 100644 --- a/projects/packages/external-media/src/shared/sources/index.js +++ b/projects/packages/external-media/src/shared/sources/index.js @@ -16,6 +16,7 @@ import { SOURCE_JETPACK_AI_GENERAL_PURPOSE_IMAGE_FOR_MEDIA_SOURCE, SOURCE_JETPACK_AI_GENERAL_PURPOSE_IMAGE_FOR_BLOCK, } from '../constants'; +import { isGutenbergKit } from '../utils/is-gutenberg-kit'; import GooglePhotosMedia from './google-photos'; import JetpackAIFeaturedImage from './jetpack-ai-featured-image'; import JetpackAIGeneralPurposeImageForBlock from './jetpack-ai-general-purpose-image-for-block'; @@ -24,7 +25,7 @@ import JetpackAppMedia from './jetpack-app-media'; import OpenverseMedia from './openverse'; import PexelsMedia from './pexels'; -export const internalMediaSources = [ +const allInternalMediaSources = [ { id: SOURCE_JETPACK_APP_MEDIA, label: __( 'Your Phone', 'jetpack-external-media' ), @@ -33,6 +34,11 @@ export const internalMediaSources = [ }, ]; +// Disable SOURCE_JETPACK_APP_MEDIA for GutenbergKit (mobile app) as sourcing +// media from "Your phone" while on a phone is less useful and possibly +// confusing. +export const internalMediaSources = isGutenbergKit() ? [] : allInternalMediaSources; + /** * Used when the context is for a featured image. */ diff --git a/projects/packages/external-media/src/shared/utils/is-gutenberg-kit.js b/projects/packages/external-media/src/shared/utils/is-gutenberg-kit.js new file mode 100644 index 0000000000000..6015c25e3934a --- /dev/null +++ b/projects/packages/external-media/src/shared/utils/is-gutenberg-kit.js @@ -0,0 +1,8 @@ +/** + * Check if the editor is running in a GutenbergKit (mobile app) environment. + * + * @return {boolean} True if running in GutenbergKit, false otherwise. + */ +export const isGutenbergKit = () => { + return !! window?.GBKit; +}; From 28c7e2e86cc4facd0835895b6162e133def33930 Mon Sep 17 00:00:00 2001 From: David Calhoun Date: Fri, 10 Oct 2025 08:52:52 -0400 Subject: [PATCH 2/3] task: Disable custom media menu button in GutenbergKit The external media sources currently do not support the token authentication and CORS requests required by GutenbergKit (mobile apps). Disabling this menu avoids presenting broken features to users. We should re-enable these once we update the server functionality to support the required authentication mechanisms. --- .../external-media/src/shared/media-button/media-menu.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/projects/packages/external-media/src/shared/media-button/media-menu.js b/projects/packages/external-media/src/shared/media-button/media-menu.js index 08fe1380e8b22..3fb30cb3de3db 100644 --- a/projects/packages/external-media/src/shared/media-button/media-menu.js +++ b/projects/packages/external-media/src/shared/media-button/media-menu.js @@ -1,6 +1,7 @@ import { Button, MenuItem, MenuGroup, Dropdown, NavigableMenu } from '@wordpress/components'; import { __ } from '@wordpress/i18n'; import { Icon, media } from '@wordpress/icons'; +import { isGutenbergKit } from '../utils/is-gutenberg-kit'; import { isSupportNext40pxDefaultSize } from '../utils/is-support-next-40px-default-size'; import MediaSources from './media-sources'; @@ -13,6 +14,13 @@ function MediaButtonMenu( props ) { const { mediaProps, open, setSelectedSource, isFeatured, isReplace, hasImage } = props; const originalComponent = mediaProps.render; + // Disable the media button menu for GutenbergKit (mobile app) as the APIs for + // the external media sources do not currently support GutenbergKit's token + // authentication and CORS requests. + if ( isGutenbergKit() ) { + return originalComponent( { open } ); + } + if ( isReplace ) { return ( Date: Fri, 10 Oct 2025 09:15:13 -0400 Subject: [PATCH 3/3] changelog --- ...task-disable-problematic-media-providers-for-gutenberg-kit | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 projects/packages/external-media/changelog/task-disable-problematic-media-providers-for-gutenberg-kit diff --git a/projects/packages/external-media/changelog/task-disable-problematic-media-providers-for-gutenberg-kit b/projects/packages/external-media/changelog/task-disable-problematic-media-providers-for-gutenberg-kit new file mode 100644 index 0000000000000..9e9d4146e3389 --- /dev/null +++ b/projects/packages/external-media/changelog/task-disable-problematic-media-providers-for-gutenberg-kit @@ -0,0 +1,4 @@ +Significance: patch +Type: removed + +GutenbergKit: disable problematic media providers.