Skip to content

Commit 67d2796

Browse files
committed
Fix request import to send the correct information.
Beside fixing the request for import to send the correct parameters in the callback, we are also improving the interface by replacing a tupple for a structure to make parameters more explicit.
1 parent 80ffe35 commit 67d2796

File tree

3 files changed

+45
-24
lines changed

3 files changed

+45
-24
lines changed

ios/gutenberg/GutenbergViewController.swift

+10-8
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,17 @@ extension GutenbergViewController: GutenbergBridgeDelegate {
7474
switch currentFilter {
7575
case .image:
7676
if(allowMultipleSelection) {
77-
callback([(1, "https://cldup.com/cXyG__fTLN.jpg", "image"), (3, "https://cldup.com/cXyG__fTLN.jpg", "image")])
77+
callback([MediaInfo(id: 1, url: "https://cldup.com/cXyG__fTLN.jpg", type: "image"),
78+
MediaInfo(id: 3, url: "https://cldup.com/cXyG__fTLN.jpg", type: "image")])
7879
} else {
79-
callback([(1, "https://cldup.com/cXyG__fTLN.jpg", "image")])
80+
callback([MediaInfo(id: 1, url: "https://cldup.com/cXyG__fTLN.jpg", type: "image")])
8081
}
8182
case .video:
8283
if(allowMultipleSelection) {
83-
callback([(2, "https://i.cloudup.com/YtZFJbuQCE.mov", "video"), (4, "https://i.cloudup.com/YtZFJbuQCE.mov", "video")])
84+
callback([MediaInfo(id: 2, url: "https://i.cloudup.com/YtZFJbuQCE.mov", type: "video"),
85+
MediaInfo(id: 4, url: "https://i.cloudup.com/YtZFJbuQCE.mov", type: "video")])
8486
} else {
85-
callback([(2, "https://i.cloudup.com/YtZFJbuQCE.mov", "video")])
87+
callback([MediaInfo(id: 2, url: "https://i.cloudup.com/YtZFJbuQCE.mov", type: "video")])
8688
}
8789
default:
8890
break
@@ -96,18 +98,18 @@ extension GutenbergViewController: GutenbergBridgeDelegate {
9698
}
9799
}
98100

99-
func gutenbergDidRequestImport(from url: URL, with callback: @escaping MediaPickerDidPickMediaCallback) {
101+
func gutenbergDidRequestImport(from url: URL, with callback: @escaping MediaImportCallback) {
100102
let id = mediaUploadCoordinator.upload(url: url)
101-
callback([(id, url.absoluteString, "image")])
103+
callback(MediaInfo(id: id, url: url.absoluteString, type: "image"))
102104
}
103105

104106
func pickAndUpload(from source: UIImagePickerController.SourceType, filter: MediaFilter, callback: @escaping MediaPickerDidPickMediaCallback) {
105107
mediaPickCoordinator = MediaPickCoordinator(presenter: self, filter: filter, callback: { (url) in
106108
guard let url = url, let mediaID = self.mediaUploadCoordinator.upload(url: url) else {
107-
callback([(nil, nil, nil)])
109+
callback([MediaInfo(id: nil, url: nil, type: nil)])
108110
return
109111
}
110-
callback([(mediaID, url.absoluteString, "image")])
112+
callback([MediaInfo(id: mediaID, url: url.absoluteString, type: "image")])
111113
self.mediaPickCoordinator = nil
112114
} )
113115
mediaPickCoordinator?.pick(from: source)

react-native-gutenberg-bridge/ios/GutenbergBridgeDelegate.swift

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,18 @@
1-
public typealias MediaPickerDidPickMediaCallback = (_ media: [(Int32?,String?,String?)]?) -> Void
1+
public struct MediaInfo {
2+
let id: Int32?
3+
let url: String?
4+
let type: String?
5+
6+
public init(id: Int32?, url: String?, type: String?) {
7+
self.id = id
8+
self.url = url
9+
self.type = type
10+
}
11+
}
12+
13+
public typealias MediaPickerDidPickMediaCallback = (_ media: [MediaInfo]?) -> Void
14+
15+
public typealias MediaImportCallback = (_ media: MediaInfo?) -> Void
216

317
public enum MediaPickerSource: String {
418
case mediaLibrary = "SITE_MEDIA_LIBRARY"
@@ -71,7 +85,7 @@ public protocol GutenbergBridgeDelegate: class {
7185
/// - url: the url to import
7286
/// - callback: A callback block to be called with an array of upload mediaIdentifiers and a placeholder images file url, use nil on both parameters to signal that the action has failed.
7387
//
74-
func gutenbergDidRequestImport(from url: URL, with callback: @escaping MediaPickerDidPickMediaCallback)
88+
func gutenbergDidRequestImport(from url: URL, with callback: @escaping MediaImportCallback)
7589

7690
/// Tells the delegate that an image block requested to reconnect with media uploads coordinator.
7791
///

react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.swift

+19-14
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,22 @@ public class RNReactNativeGutenbergBridge: RCTEventEmitter {
2727
callback(nil)
2828
return
2929
}
30-
if (allowMultipleSelection) {
31-
let formattedMedia = media.map { (id, url, type) in
32-
return [mediaDictKeys.IDKey: id, mediaDictKeys.URLKey: url, mediaDictKeys.TypeKey: type]
33-
}
34-
callback([formattedMedia])
30+
let mediaToReturn: [MediaInfo]
31+
if allowMultipleSelection {
32+
mediaToReturn = media
3533
} else {
36-
guard let (mediaID, mediaURL, mediaType) = media.first else {
37-
callback(nil)
38-
return
39-
}
40-
callback([[mediaDictKeys.IDKey: mediaID, mediaDictKeys.URLKey: mediaURL, mediaDictKeys.TypeKey: mediaType]])
34+
mediaToReturn = Array(media.prefix(1))
35+
}
36+
37+
let jsFormattedMedia = mediaToReturn.map { mediaInfo in
38+
return [mediaDictKeys.IDKey: mediaInfo.id as Any,
39+
mediaDictKeys.URLKey: mediaInfo.url as Any,
40+
mediaDictKeys.TypeKey: mediaInfo.type as Any]
41+
}
42+
if allowMultipleSelection {
43+
callback([jsFormattedMedia])
44+
} else {
45+
callback(jsFormattedMedia)
4146
}
4247
})
4348
}
@@ -50,12 +55,12 @@ public class RNReactNativeGutenbergBridge: RCTEventEmitter {
5055
return
5156
}
5257
DispatchQueue.main.async {
53-
self.delegate?.gutenbergDidRequestImport(from: url, with: { mediaList in
54-
guard let mediaList = mediaList else {
58+
self.delegate?.gutenbergDidRequestImport(from: url, with: { mediaInfo in
59+
guard let mediaInfo = mediaInfo else {
5560
callback(nil)
5661
return
57-
}
58-
callback(mediaList)
62+
}
63+
callback([mediaInfo.id as Any, mediaInfo.url as Any])
5964
})
6065
}
6166
}

0 commit comments

Comments
 (0)