diff --git a/gutenberg b/gutenberg index 3d676ed6f3..19d279ea38 160000 --- a/gutenberg +++ b/gutenberg @@ -1 +1 @@ -Subproject commit 3d676ed6f3c948a5e9d62b6ec6f71e10f6c30289 +Subproject commit 19d279ea38c9e15b113cfc51a1dabb0d02fa0de7 diff --git a/react-native-gutenberg-bridge/index.js b/react-native-gutenberg-bridge/index.js index 81cae5852a..210ef616c6 100644 --- a/react-native-gutenberg-bridge/index.js +++ b/react-native-gutenberg-bridge/index.js @@ -89,6 +89,17 @@ export function requestMediaPicker( source, filter, multiple, callback ) { RNReactNativeGutenbergBridge.requestMediaPickFrom( source, filter, multiple, callback ); } +/** + * Request to render an unsuported block. + * + * A way to show unsupported blocks to the user is to render it on a web view. + * + * @param {string} htmlContent Raw html content of the block. + */ +export function requestUnsupportedBlockFallback( htmlContent ) { + RNReactNativeGutenbergBridge.requestUnsupportedBlockFallback( htmlContent ); +} + export function requestMediaImport( url, callback ) { return RNReactNativeGutenbergBridge.requestMediaImport( url, callback ); } diff --git a/react-native-gutenberg-bridge/ios/GutenbergBridgeDelegate.swift b/react-native-gutenberg-bridge/ios/GutenbergBridgeDelegate.swift index 61d607d7ae..0b40777ea7 100644 --- a/react-native-gutenberg-bridge/ios/GutenbergBridgeDelegate.swift +++ b/react-native-gutenberg-bridge/ios/GutenbergBridgeDelegate.swift @@ -162,6 +162,9 @@ public protocol GutenbergBridgeDelegate: class { /// Tells the delegate that the editor needs to log a custom event /// - Parameter event: The event key to be logged func gutenbergDidLogUserEvent(_ event: GutenbergUserEvent) + + /// Tells the delegate that the editor needs to render an unsupported block + func gutenbergDidRequestUnsupportedBlockFallback(with content: String) } // MARK: - Optional GutenbergBridgeDelegate methods @@ -169,4 +172,5 @@ public protocol GutenbergBridgeDelegate: class { public extension GutenbergBridgeDelegate { func gutenbergDidLoad() { } func gutenbergDidLayout() { } + func gutenbergDidRequestUnsupportedBlockFallback(with content: String) { } } diff --git a/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.m b/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.m index 5eead641e4..5da13427d2 100644 --- a/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.m +++ b/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.m @@ -19,5 +19,6 @@ @interface RCT_EXTERN_MODULE(RNReactNativeGutenbergBridge, NSObject) RCT_EXTERN_METHOD(requestImageFullscreenPreview:(NSString *)currentImageUrlString originalImageUrlString:(NSString *)originalImageUrlString) RCT_EXTERN_METHOD(requestMediaEditor:(NSString *)mediaUrl callback:(RCTResponseSenderBlock)callback) RCT_EXTERN_METHOD(logUserEvent:(NSString *)event properties:(NSDictionary *)properties) +RCT_EXTERN_METHOD(requestUnsupportedBlockFallback:(NSString *)content) @end diff --git a/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.swift b/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.swift index b13ca92532..63265d45b7 100644 --- a/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.swift +++ b/react-native-gutenberg-bridge/ios/RNReactNativeGutenbergBridge.swift @@ -44,6 +44,13 @@ public class RNReactNativeGutenbergBridge: RCTEventEmitter { } } + @objc + func requestUnsupportedBlockFallback(_ content: String) { + DispatchQueue.main.async { + self.delegate?.gutenbergDidRequestUnsupportedBlockFallback(with: content) + } + } + @objc func getOtherMediaOptions(_ filter: [String]?, callback: @escaping RCTResponseSenderBlock) { guard let dataSource = dataSource else {