Skip to content

Commit 1af4ec8

Browse files
authored
feat: GutenbergKit synchronizes featured images (#24588)
* feat: GutenbergKit synchronizes featured images Handle featured image updates by updating associated post data, so that the correct featured image is persisted and displayed in the post settings UI. * refactor: Simplify class to a struct * fix: Ensure newly uploaded featured images display The stub serves as a placeholder and is populated later once the app needs to display the image. * build: Update GutenbergKit version
1 parent d94f2ae commit 1af4ec8

File tree

5 files changed

+41
-3
lines changed

5 files changed

+41
-3
lines changed

Modules/Package.resolved

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ let package = Package(
5555
.package(url: "https://github.com/zendesk/support_sdk_ios", from: "8.0.3"),
5656
// We can't use wordpress-rs branches nor commits here. Only tags work.
5757
.package(url: "https://github.com/Automattic/wordpress-rs", revision: "alpha-20250523"),
58-
.package(url: "https://github.com/wordpress-mobile/GutenbergKit", revision: "fdfe788530bbff864ce7147b5a68608d7025e078"),
58+
.package(url: "https://github.com/wordpress-mobile/GutenbergKit", from: "0.3.0"),
5959
.package(
6060
url: "https://github.com/Automattic/color-studio",
6161
revision: "bf141adc75e2769eb469a3e095bdc93dc30be8de"

WordPress/Classes/ViewRelated/Comments/Controllers/Editor/CommentGutenbergEditorViewController.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ extension CommentGutenbergEditorViewController: GutenbergKit.EditorViewControlle
8080
// Do nothing
8181
}
8282

83+
func editor(_ viewController: GutenbergKit.EditorViewController, didUpdateFeaturedImage mediaID: Int) {
84+
// Do nothing
85+
}
86+
8387
func editor(_ viewController: GutenbergKit.EditorViewController, didLogException error: GutenbergKit.GutenbergJSException) {
8488
// Do nothing
8589
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import Foundation
2+
import WordPressShared
3+
4+
struct NewGutenbergFeaturedImageHelper {
5+
private let post: AbstractPost
6+
let event: WPAnalyticsEvent = .editorPostFeaturedImageChanged
7+
8+
init(post: AbstractPost) {
9+
self.post = post
10+
}
11+
12+
func setFeaturedImage(mediaID: Int) {
13+
let media = Media.existingOrStubMediaWith(mediaID: NSNumber(value: mediaID), inBlog: post.blog)
14+
post.featuredImage = media
15+
WPAnalytics.track(event, properties: [
16+
"via": "gutenberg_kit",
17+
"action": "added"
18+
])
19+
}
20+
}

WordPress/Classes/ViewRelated/NewGutenberg/NewGutenbergViewController.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ class NewGutenbergViewController: UIViewController, PostEditor, PublishingEditor
2727
return GutenbergMediaPickerHelper(context: self, post: post)
2828
}()
2929

30+
lazy var featuredImageHelper = NewGutenbergFeaturedImageHelper(post: post)
31+
3032
// MARK: - PostEditor
3133

3234
private(set) lazy var postEditorStateContext: PostEditorStateContext = {
@@ -417,6 +419,17 @@ extension NewGutenbergViewController: GutenbergKit.EditorViewControllerDelegate
417419
gutenbergDidRequestToggleUndoButton(!state.hasUndo)
418420
}
419421

422+
func editor(_ viewController: GutenbergKit.EditorViewController, didUpdateFeaturedImage mediaID: Int) {
423+
let featuredImageID = post.featuredImage?.mediaID?.intValue
424+
425+
guard featuredImageID != mediaID else {
426+
// If the featured image ID is the same, no need to update
427+
return
428+
}
429+
430+
self.featuredImageHelper.setFeaturedImage(mediaID: mediaID)
431+
}
432+
420433
func editor(_ viewController: GutenbergKit.EditorViewController, didLogException error: GutenbergKit.GutenbergJSException) {
421434
logException(error) {
422435
// Do nothing

0 commit comments

Comments
 (0)