Skip to content

Commit bb19d3c

Browse files
dcalhounclaude
andcommitted
feat: wire GBKMediaUploadProcessor into the GutenbergKit editor
Sets the media upload delegate on GutenbergView so device media picked in the experimental block editor is processed per the app's media settings before upload. The fragment stores and forwards the delegate following the existing setNetworkRequestListener pattern (GutenbergView tolerates assignment before or after page load), and the activity constructs the processor with its SiteModel and injected wrappers. If GutenbergKit's upload server fails to start, uploads degrade to the existing WebView path unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 77ea280 commit bb19d3c

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

WordPress/src/main/java/org/wordpress/android/ui/posts/GutenbergKitActivity.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import org.wordpress.android.editor.EditorImagePreviewListener
6565
import org.wordpress.android.editor.EditorImageSettingsListener
6666
import org.wordpress.android.editor.ExceptionLogger
6767
import org.wordpress.android.editor.gutenberg.DialogVisibility
68+
import org.wordpress.android.ui.posts.editor.GBKMediaUploadProcessor
6869
import org.wordpress.android.ui.posts.editor.GutenbergKitEditorFragment
6970
import org.wordpress.android.ui.posts.editor.GutenbergKitNetworkLogger
7071
import org.wordpress.android.editor.savedinstance.SavedInstanceDatabase
@@ -172,6 +173,7 @@ import org.wordpress.android.ui.posts.reactnative.ReactNativeRequestHandler
172173
import org.wordpress.android.ui.posts.sharemessage.EditJetpackSocialShareMessageActivity
173174
import org.wordpress.android.ui.posts.sharemessage.EditJetpackSocialShareMessageActivity.Companion.createIntent
174175
import org.wordpress.android.ui.prefs.AppPrefs
176+
import org.wordpress.android.ui.prefs.AppPrefsWrapper
175177
import org.wordpress.android.ui.prefs.SiteSettingsInterface
176178
import org.wordpress.android.ui.prefs.SiteSettingsInterface.SiteSettingsListener
177179
import org.wordpress.android.ui.reader.utils.ReaderUtilsWrapper
@@ -193,6 +195,7 @@ import org.wordpress.android.util.DateTimeUtilsWrapper
193195
import org.wordpress.android.util.DisplayUtils
194196
import org.wordpress.android.util.FluxCUtils
195197
import org.wordpress.android.util.MediaUtils
198+
import org.wordpress.android.util.MediaUtilsWrapper
196199
import org.wordpress.android.util.NetworkUtils
197200
import org.wordpress.android.util.ReblogUtils
198201
import org.wordpress.android.util.ShortcutUtils
@@ -387,6 +390,8 @@ class GutenbergKitActivity : BaseAppCompatActivity(), EditorImageSettingsListene
387390
@Inject lateinit var editorJetpackSocialViewModel: EditorJetpackSocialViewModel
388391
@Inject lateinit var gutenbergKitNetworkLogger: GutenbergKitNetworkLogger
389392
@Inject lateinit var gutenbergKitSettingsBuilder: GutenbergKitSettingsBuilder
393+
@Inject lateinit var mediaUtilsWrapper: MediaUtilsWrapper
394+
@Inject lateinit var appPrefsWrapper: AppPrefsWrapper
390395
private lateinit var editPostNavigationViewModel: EditPostNavigationViewModel
391396
private lateinit var editPostSettingsViewModel: EditPostSettingsViewModel
392397
private lateinit var prepublishingViewModel: PrepublishingViewModel
@@ -2260,6 +2265,16 @@ class GutenbergKitActivity : BaseAppCompatActivity(), EditorImageSettingsListene
22602265
}
22612266
)
22622267
}
2268+
2269+
// Process device media per the app's media settings before upload
2270+
editorFragment?.setMediaUploadDelegate(
2271+
GBKMediaUploadProcessor(
2272+
site = siteModel,
2273+
appContext = applicationContext,
2274+
mediaUtilsWrapper = mediaUtilsWrapper,
2275+
appPrefsWrapper = appPrefsWrapper,
2276+
)
2277+
)
22632278
}
22642279
VIEW_PAGER_PAGE_SETTINGS -> editPostSettingsFragment = fragment as EditPostSettingsFragment
22652280
}

WordPress/src/main/java/org/wordpress/android/ui/posts/editor/GutenbergKitEditorFragment.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.wordpress.gutenberg.GutenbergView.LogJsExceptionListener
3939
import org.wordpress.gutenberg.GutenbergView.OpenMediaLibraryListener
4040
import org.wordpress.gutenberg.GutenbergView.TitleAndContentCallback
4141
import org.wordpress.gutenberg.Media
42+
import org.wordpress.gutenberg.MediaUploadDelegate
4243
import org.wordpress.gutenberg.model.EditorConfiguration
4344
import java.util.concurrent.CountDownLatch
4445
import java.util.concurrent.TimeUnit
@@ -61,6 +62,7 @@ class GutenbergKitEditorFragment : GutenbergKitEditorFragmentBase() {
6162
private var onLogJsExceptionListener: LogJsExceptionListener? = null
6263
private var modalDialogStateListener: GutenbergView.ModalDialogStateListener? = null
6364
private var networkRequestListener: GutenbergView.NetworkRequestListener? = null
65+
private var mediaUploadDelegate: MediaUploadDelegate? = null
6466
private var rootView: View? = null
6567
private var isXPostsEnabled: Boolean = false
6668

@@ -224,6 +226,9 @@ class GutenbergKitEditorFragment : GutenbergKitEditorFragmentBase() {
224226
networkRequestListener?.let(
225227
gutenbergView::setNetworkRequestListener
226228
)
229+
mediaUploadDelegate?.let {
230+
gutenbergView.mediaUploadDelegate = it
231+
}
227232

228233
// Set up content provider for WebView refresh recovery
229234
gutenbergView.setLatestContentProvider(
@@ -552,6 +557,11 @@ class GutenbergKitEditorFragment : GutenbergKitEditorFragmentBase() {
552557
gutenbergView?.setNetworkRequestListener(listener)
553558
}
554559

560+
fun setMediaUploadDelegate(delegate: MediaUploadDelegate) {
561+
mediaUploadDelegate = delegate
562+
gutenbergView?.mediaUploadDelegate = delegate
563+
}
564+
555565
override fun onUndoPressed() {
556566
gutenbergView?.undo()
557567
}

0 commit comments

Comments
 (0)