Skip to content

Commit cfb54a7

Browse files
authored
[RNMobile] Add metadata parameter to media upload events (#48103)
* Add metadata param to mediaUpdate event (iOS) * Add metadata parameter to media upload success event (Android) * Add metadata for testing with demo app * Update react-native-editor changelog
1 parent 0ff570f commit cfb54a7

6 files changed

Lines changed: 23 additions & 12 deletions

File tree

packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/ReactNativeGutenbergBridge/GutenbergBridgeJS2Parent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.facebook.react.bridge.ReadableArray;
66
import com.facebook.react.bridge.ReadableMap;
77
import com.facebook.react.bridge.WritableMap;
8+
import com.facebook.react.bridge.WritableNativeMap;
89

910
import org.wordpress.mobile.WPAndroidGlue.MediaOption;
1011
import org.wordpress.mobile.WPAndroidGlue.RequestExecutor;
@@ -29,7 +30,7 @@ interface MediaSelectedCallback {
2930
interface MediaUploadEventEmitter {
3031
void onUploadMediaFileClear(int mediaId);
3132
void onMediaFileUploadProgress(int mediaId, float progress);
32-
void onMediaFileUploadSucceeded(int mediaId, String mediaUrl, int serverId);
33+
void onMediaFileUploadSucceeded(int mediaId, String mediaUrl, int serverId, WritableNativeMap metadata);
3334
void onMediaFileUploadFailed(int mediaId);
3435
}
3536

packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/DeferredEventEmitter.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public interface JSEventEmitter {
4747
private static final String MAP_KEY_MEDIA_FILE_STATE = "state";
4848
private static final String MAP_KEY_MEDIA_FILE_MEDIA_ACTION_PROGRESS = "progress";
4949
private static final String MAP_KEY_MEDIA_FILE_MEDIA_SERVER_ID = "mediaServerId";
50+
private static final String MAP_KEY_MEDIA_FILE_METADATA = "metadata";
51+
5052
private static final String MAP_KEY_UPDATE_CAPABILITIES = "updateCapabilities";
5153

5254
private static final String MAP_KEY_REPLACE_BLOCK_HTML = "html";
@@ -99,15 +101,20 @@ private void flushActionQueueToJS() {
99101
}
100102

101103
private void setMediaFileUploadDataInJS(int state, int mediaId, String mediaUrl, float progress) {
102-
setMediaFileUploadDataInJS(state, mediaId, mediaUrl, progress, MEDIA_SERVER_ID_UNKNOWN);
104+
setMediaFileUploadDataInJS(state, mediaId, mediaUrl, progress, MEDIA_SERVER_ID_UNKNOWN, new WritableNativeMap());
103105
}
104106

105107
private void setMediaFileUploadDataInJS(int state, int mediaId, String mediaUrl, float progress, int mediaServerId) {
108+
setMediaFileUploadDataInJS(state, mediaId, mediaUrl, progress, mediaServerId, new WritableNativeMap());
109+
}
110+
111+
private void setMediaFileUploadDataInJS(int state, int mediaId, String mediaUrl, float progress, int mediaServerId, WritableNativeMap metadata) {
106112
WritableMap writableMap = new WritableNativeMap();
107113
writableMap.putInt(MAP_KEY_MEDIA_FILE_STATE, state);
108114
writableMap.putInt(MAP_KEY_MEDIA_FILE_UPLOAD_MEDIA_ID, mediaId);
109115
writableMap.putString(MAP_KEY_MEDIA_FILE_UPLOAD_MEDIA_URL, mediaUrl);
110116
writableMap.putDouble(MAP_KEY_MEDIA_FILE_MEDIA_ACTION_PROGRESS, progress);
117+
writableMap.putMap(MAP_KEY_MEDIA_FILE_METADATA, metadata);
111118
if (mediaServerId != MEDIA_SERVER_ID_UNKNOWN) {
112119
writableMap.putInt(MAP_KEY_MEDIA_FILE_MEDIA_SERVER_ID, mediaServerId);
113120
}
@@ -161,8 +168,8 @@ public void onMediaFileUploadProgress(int mediaId, float progress) {
161168
}
162169

163170
@Override
164-
public void onMediaFileUploadSucceeded(int mediaId, String mediaUrl, int mediaServerId) {
165-
setMediaFileUploadDataInJS(MEDIA_UPLOAD_STATE_SUCCEEDED, mediaId, mediaUrl, 1, mediaServerId);
171+
public void onMediaFileUploadSucceeded(int mediaId, String mediaUrl, int mediaServerId, WritableNativeMap metadata) {
172+
setMediaFileUploadDataInJS(MEDIA_UPLOAD_STATE_SUCCEEDED, mediaId, mediaUrl, 1, mediaServerId, metadata);
166173
}
167174

168175
@Override

packages/react-native-bridge/android/react-native-bridge/src/main/java/org/wordpress/mobile/WPAndroidGlue/WPAndroidGlueCode.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.facebook.react.bridge.ReadableMap;
3434
import com.facebook.react.bridge.ReadableMapKeySetIterator;
3535
import com.facebook.react.bridge.WritableMap;
36+
import com.facebook.react.bridge.WritableNativeMap;
3637
import com.facebook.react.common.LifecycleState;
3738
import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler;
3839
import com.facebook.react.shell.MainPackageConfig;
@@ -1058,8 +1059,9 @@ public void mediaFileUploadFailed(final int mediaId) {
10581059
mDeferredEventEmitter.onMediaFileUploadFailed(mediaId);
10591060
}
10601061

1061-
public void mediaFileUploadSucceeded(final int mediaId, final String mediaUrl, final int serverMediaId) {
1062-
mDeferredEventEmitter.onMediaFileUploadSucceeded(mediaId, mediaUrl, serverMediaId);
1062+
public void mediaFileUploadSucceeded(final int mediaId, final String mediaUrl, final int serverMediaId, final
1063+
WritableNativeMap metadata) {
1064+
mDeferredEventEmitter.onMediaFileUploadSucceeded(mediaId, mediaUrl, serverMediaId, metadata);
10631065
}
10641066

10651067
public void clearMediaFileURL(final int mediaId) {

packages/react-native-bridge/ios/Gutenberg.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ public class Gutenberg: UIResponder {
140140
bridgeModule.sendEvent(withName: event.rawValue, body: body)
141141
}
142142

143-
public func mediaUploadUpdate(id: Int32, state: MediaUploadState, progress: Float, url: URL?, serverID: Int32?) {
144-
mediaUpdate(event: .mediaUpload, id: id, state: state, progress: progress, url: url, serverID: serverID)
143+
public func mediaUploadUpdate(id: Int32, state: MediaUploadState, progress: Float, url: URL?, serverID: Int32?, metadata: [String: Any] = [:]) {
144+
mediaUpdate(event: .mediaUpload, id: id, state: state, progress: progress, url: url, serverID: serverID, metadata: metadata)
145145
}
146146

147147
public func updateMediaSaveStatus(id: Int32, state: MediaSaveState, progress: Float, url: URL?, serverID: Int32?) {
@@ -165,8 +165,8 @@ public class Gutenberg: UIResponder {
165165
])
166166
}
167167

168-
private func mediaUpdate<State: MediaState>(event: RNReactNativeGutenbergBridge.EventName, id: Int32, state: State, progress: Float, url: URL?, serverID: Int32?) {
169-
var data: [String: Any] = ["mediaId": id, "state": state.rawValue, "progress": progress];
168+
private func mediaUpdate<State: MediaState>(event: RNReactNativeGutenbergBridge.EventName, id: Int32, state: State, progress: Float, url: URL?, serverID: Int32?, metadata: [String: Any] = [:]) {
169+
var data: [String: Any] = ["mediaId": id, "state": state.rawValue, "progress": progress, "metadata": metadata ];
170170
if let url = url {
171171
data["mediaUrl"] = url.absoluteString
172172
}

packages/react-native-editor/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ For each user feature we should also add a importance categorization label to i
1010
-->
1111

1212
## Unreleased
13+
- [*] Add metadata parameter to media upload events [#48103]
1314

1415
## 1.89.0
1516
* No User facing changes *

packages/react-native-editor/ios/GutenbergDemo/MediaUploadCoordinator.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class MediaUploadCoordinator: NSObject {
7070
if !successfullUpload {
7171
timer.invalidate()
7272
progress.setUserInfoObject("Network upload failed", forKey: .mediaError)
73-
gutenberg.mediaUploadUpdate(id: mediaID, state: .failed, progress: 1, url: nil, serverID: nil)
73+
gutenberg.mediaUploadUpdate(id: mediaID, state: .failed, progress: 1, url: nil, serverID: nil, metadata: ["demoApp" : true, "failReason" : "Network upload failed"])
7474
successfullUpload = true
7575
return
7676
}
@@ -80,7 +80,7 @@ class MediaUploadCoordinator: NSObject {
8080
gutenberg.mediaUploadUpdate(id: mediaID, state: .uploading, progress: Float(progress.fractionCompleted), url: nil, serverID: nil)
8181
} else if progress.fractionCompleted >= 1 {
8282
timer.invalidate()
83-
gutenberg.mediaUploadUpdate(id: mediaID, state: .succeeded, progress: 1, url: mediaURL, serverID: mediaID)
83+
gutenberg.mediaUploadUpdate(id: mediaID, state: .succeeded, progress: 1, url: mediaURL, serverID: mediaID, metadata: ["demoApp" : true])
8484
activeUploads[mediaID] = nil
8585
}
8686
}

0 commit comments

Comments
 (0)