diff --git a/ios/RCTWebViewBridge.h b/ios/RCTWebViewBridge.h index c7d34222..a2da007d 100644 --- a/ios/RCTWebViewBridge.h +++ b/ios/RCTWebViewBridge.h @@ -43,6 +43,7 @@ shouldStartLoadForRequest:(NSMutableDictionary *)request - (void)goForward; - (void)goBack; - (void)reload; +- (void)stopLoading; - (void)sendToBridge:(NSString *)message; @end diff --git a/ios/RCTWebViewBridge.m b/ios/RCTWebViewBridge.m index 86ddabc4..5849c11f 100644 --- a/ios/RCTWebViewBridge.m +++ b/ios/RCTWebViewBridge.m @@ -88,6 +88,11 @@ - (void)reload [_webView reload]; } +- (void)stopLoading +{ + [_webView stopLoading]; +} + - (void)sendToBridge:(NSString *)message { //we are warpping the send message in a function to make sure that if diff --git a/ios/RCTWebViewBridgeManager.m b/ios/RCTWebViewBridgeManager.m index 218cca0e..9a96fb32 100644 --- a/ios/RCTWebViewBridgeManager.m +++ b/ios/RCTWebViewBridgeManager.m @@ -61,6 +61,7 @@ - (UIView *)view @"FormSubmitted": @(UIWebViewNavigationTypeFormSubmitted), @"BackForward": @(UIWebViewNavigationTypeBackForward), @"Reload": @(UIWebViewNavigationTypeReload), + @"StopLoading": @(UIWebViewNavigationTypeStopLoading), @"FormResubmitted": @(UIWebViewNavigationTypeFormResubmitted), @"Other": @(UIWebViewNavigationTypeOther) }, @@ -108,6 +109,18 @@ + (BOOL)requiresMainQueueSetup }]; } +RCT_EXPORT_METHOD(stopLoading:(nonnull NSNumber *)reactTag) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + RCTWebViewBridge *view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view stopLoading]; + } + }]; +} + RCT_EXPORT_METHOD(sendToBridge:(nonnull NSNumber *)reactTag value:(NSString*)message) { diff --git a/webview-bridge/index.android.js b/webview-bridge/index.android.js index 14e5e263..8e2ac10e 100644 --- a/webview-bridge/index.android.js +++ b/webview-bridge/index.android.js @@ -170,6 +170,14 @@ var WebViewBridge = createReactClass({ ); }, + stopLoading: function() { + UIManager.dispatchViewManagerCommand( + this.getWebViewBridgeHandle(), + UIManager.RCTWebViewBridge.Commands.stopLoading, + null + ); + }, + sendToBridge: function (message: string) { UIManager.dispatchViewManagerCommand( this.getWebViewBridgeHandle(), diff --git a/webview-bridge/index.ios.js b/webview-bridge/index.ios.js index 1aad6b02..f74b3f0d 100644 --- a/webview-bridge/index.ios.js +++ b/webview-bridge/index.ios.js @@ -53,6 +53,7 @@ var NavigationType = { formsubmit: RCTWebViewBridgeManager.NavigationType.FormSubmitted, backforward: RCTWebViewBridgeManager.NavigationType.BackForward, reload: RCTWebViewBridgeManager.NavigationType.Reload, + stopLoading: RCTWebViewBridgeManager.NavigationType.StopLoading, formresubmit: RCTWebViewBridgeManager.NavigationType.FormResubmitted, other: RCTWebViewBridgeManager.NavigationType.Other, }; @@ -231,6 +232,14 @@ var WebViewBridge = createReactClass({ ); }, + stopLoading: function() { + UIManager.dispatchViewManagerCommand( + this.getWebViewBridgeHandle(), + UIManager.RCTWebViewBridge.Commands.stopLoading, + null + ); + }, + sendToBridge: function (message: string) { WebViewBridgeManager.sendToBridge(this.getWebViewBridgeHandle(), message); },