Skip to content

Commit 23322e4

Browse files
authored
feat: GutenbergKit supports mentions and cross-posts (#22109)
* feat: Display suggestions UI for GutenbergKit autocompletion * feat: Display cross-post suggestions based on site capabilities * build: Update GutenbergKit version * build: Update GutenbergKit version * build: Update GutenbergKit version * docs: Shorten inline comment * build: Update GutenbergKit version * build: Update GutenbergKit version
1 parent 37a5943 commit 23322e4

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2762,6 +2762,10 @@ class EditPostActivity : BaseAppCompatActivity(), EditorFragmentActivity, Editor
27622762
if (editorFragment is GutenbergEditorFragment) {
27632763
(editorFragment as GutenbergEditorFragment).updateCapabilities(gutenbergPropsBuilder)
27642764
}
2765+
if (editorFragment is GutenbergKitEditorFragment) {
2766+
val enableXPosts = siteModel.isUsingWpComRestApi && (isXPostsCapable == null || isXPostsCapable == true)
2767+
(editorFragment as GutenbergKitEditorFragment).setXPostsEnabled(enableXPosts)
2768+
}
27652769
}
27662770

27672771
private val gutenbergPropsBuilder: GutenbergPropsBuilder

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class GutenbergKitEditorFragment : EditorFragmentAbstract(), EditorMediaUploadLi
7575
private var isEditorStarted = false
7676
private var isEditorDidMount = false
7777
private var rootView: View? = null
78+
private var isXPostsEnabled: Boolean = false
7879

7980
// Access settings through ViewModel
8081
private val settings: GutenbergKitSettings?
@@ -139,6 +140,31 @@ class GutenbergKitEditorFragment : EditorFragmentAbstract(), EditorMediaUploadLi
139140
featuredImageChangeListener?.let(gutenbergView::setFeaturedImageChangeListener)
140141
openMediaLibraryListener?.let(gutenbergView::setOpenMediaLibraryListener)
141142
onLogJsExceptionListener?.let(gutenbergView::setLogJsExceptionListener)
143+
144+
// Set up autocomplete listener for user mentions and cross-post suggestions
145+
gutenbergView.setAutocompleterTriggeredListener(object : GutenbergView.AutocompleterTriggeredListener {
146+
override fun onAutocompleterTriggered(type: String) {
147+
when (type) {
148+
"at-symbol" -> mEditorFragmentListener.showUserSuggestions { result ->
149+
result?.let {
150+
// Appended space completes the autocomplete session
151+
gutenbergView.appendTextAtCursor("$it ")
152+
}
153+
}
154+
"plus-symbol" -> {
155+
if (isXPostsEnabled) {
156+
mEditorFragmentListener.showXpostSuggestions { result ->
157+
result?.let {
158+
// Appended space completes the autocomplete session
159+
gutenbergView.appendTextAtCursor("$it ")
160+
}
161+
}
162+
}
163+
}
164+
}
165+
}
166+
})
167+
142168
gutenbergView.setEditorDidBecomeAvailable {
143169
isEditorDidMount = true
144170
mEditorFragmentListener.onEditorFragmentContentReady(ArrayList<Any?>(), false)
@@ -523,6 +549,10 @@ class GutenbergKitEditorFragment : EditorFragmentAbstract(), EditorMediaUploadLi
523549
gutenbergView?.start(config)
524550
}
525551

552+
fun setXPostsEnabled(enabled: Boolean) {
553+
isXPostsEnabled = enabled
554+
}
555+
526556
private fun buildEditorConfiguration(editorSettings: String): EditorConfiguration {
527557
val kitSettings = settings!!
528558

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ google-play-services-auth = '20.4.1'
7373
google-services = '4.4.3'
7474
gravatar = '2.5.0'
7575
greenrobot-eventbus = '3.3.1'
76-
gutenberg-kit = 'v0.7.0'
76+
gutenberg-kit = 'v0.8.0-alpha.0'
7777
gutenberg-mobile = 'v1.121.0'
7878
indexos-media-for-mobile = '43a9026f0973a2f0a74fa813132f6a16f7499c3a'
7979
jackson-databind = '2.12.7.1'

0 commit comments

Comments
 (0)