|  | @@ -41,12 +41,15 @@ import com.facebook.react.views.scroll.ScrollEvent;
 | 
	
		
			
			| 41 | 41 |  import com.facebook.react.views.scroll.ScrollEventType;
 | 
	
		
			
			| 42 | 42 |  import com.facebook.react.views.scroll.OnScrollDispatchHelper;
 | 
	
		
			
			| 43 | 43 |  import com.facebook.react.bridge.Arguments;
 | 
	
		
			
			|  | 44 | +import com.facebook.react.bridge.CatalystInstance;
 | 
	
		
			
			| 44 | 45 |  import com.facebook.react.bridge.LifecycleEventListener;
 | 
	
		
			
			| 45 | 46 |  import com.facebook.react.bridge.ReactContext;
 | 
	
		
			
			| 46 | 47 |  import com.facebook.react.bridge.ReadableArray;
 | 
	
		
			
			| 47 | 48 |  import com.facebook.react.bridge.ReadableMap;
 | 
	
		
			
			| 48 | 49 |  import com.facebook.react.bridge.ReadableMapKeySetIterator;
 | 
	
		
			
			| 49 | 50 |  import com.facebook.react.bridge.WritableMap;
 | 
	
		
			
			|  | 51 | +import com.facebook.react.bridge.WritableNativeArray;
 | 
	
		
			
			|  | 52 | +import com.facebook.react.bridge.WritableNativeMap;
 | 
	
		
			
			| 50 | 53 |  import com.facebook.react.common.MapBuilder;
 | 
	
		
			
			| 51 | 54 |  import com.facebook.react.common.build.ReactBuildConfig;
 | 
	
		
			
			| 52 | 55 |  import com.facebook.react.module.annotations.ReactModule;
 | 
	
	
		
			
			|  | @@ -973,6 +976,8 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
 | 
	
		
			
			| 973 | 976 |      protected boolean messagingEnabled = false;
 | 
	
		
			
			| 974 | 977 |      protected @Nullable
 | 
	
		
			
			| 975 | 978 |      RNCWebViewClient mRNCWebViewClient;
 | 
	
		
			
			|  | 979 | +    protected @Nullable
 | 
	
		
			
			|  | 980 | +    CatalystInstance mCatalystInstance;
 | 
	
		
			
			| 976 | 981 |      protected boolean sendContentSizeChangeEvents = false;
 | 
	
		
			
			| 977 | 982 |      private OnScrollDispatchHelper mOnScrollDispatchHelper;
 | 
	
		
			
			| 978 | 983 |      protected boolean hasScrollEvent = false;
 | 
	
	
		
			
			|  | @@ -1047,6 +1052,14 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
 | 
	
		
			
			| 1047 | 1052 |        return new RNCWebViewBridge(webView);
 | 
	
		
			
			| 1048 | 1053 |      }
 | 
	
		
			
			| 1049 | 1054 |  
 | 
	
		
			
			|  | 1055 | +    protected void createCatalystInstance() {
 | 
	
		
			
			|  | 1056 | +      ReactContext reactContext = (ReactContext) this.getContext();
 | 
	
		
			
			|  | 1057 | +
 | 
	
		
			
			|  | 1058 | +      if (reactContext != null) {
 | 
	
		
			
			|  | 1059 | +        mCatalystInstance = reactContext.getCatalystInstance();
 | 
	
		
			
			|  | 1060 | +      }
 | 
	
		
			
			|  | 1061 | +    }
 | 
	
		
			
			|  | 1062 | +
 | 
	
		
			
			| 1050 | 1063 |      @SuppressLint("AddJavascriptInterface")
 | 
	
		
			
			| 1051 | 1064 |      public void setMessagingEnabled(boolean enabled) {
 | 
	
		
			
			| 1052 | 1065 |        if (messagingEnabled == enabled) {
 | 
	
	
		
			
			|  | @@ -1057,6 +1070,7 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
 | 
	
		
			
			| 1057 | 1070 |  
 | 
	
		
			
			| 1058 | 1071 |        if (enabled) {
 | 
	
		
			
			| 1059 | 1072 |          addJavascriptInterface(createRNCWebViewBridge(this), JAVASCRIPT_INTERFACE);
 | 
	
		
			
			|  | 1073 | +        this.createCatalystInstance();
 | 
	
		
			
			| 1060 | 1074 |        } else {
 | 
	
		
			
			| 1061 | 1075 |          removeJavascriptInterface(JAVASCRIPT_INTERFACE);
 | 
	
		
			
			| 1062 | 1076 |        }
 | 
	
	
		
			
			|  | @@ -1085,6 +1099,9 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
 | 
	
		
			
			| 1085 | 1099 |      }
 | 
	
		
			
			| 1086 | 1100 |  
 | 
	
		
			
			| 1087 | 1101 |      public void onMessage(String message) {
 | 
	
		
			
			|  | 1102 | +      ReactContext reactContext = (ReactContext) this.getContext();
 | 
	
		
			
			|  | 1103 | +      RNCWebView mContext = this;
 | 
	
		
			
			|  | 1104 | +
 | 
	
		
			
			| 1088 | 1105 |        if (mRNCWebViewClient != null) {
 | 
	
		
			
			| 1089 | 1106 |          WebView webView = this;
 | 
	
		
			
			| 1090 | 1107 |          webView.post(new Runnable() {
 | 
	
	
		
			
			|  | @@ -1095,16 +1112,36 @@ public class RNCWebViewManager extends SimpleViewManager<WebView> {
 | 
	
		
			
			| 1095 | 1112 |              }
 | 
	
		
			
			| 1096 | 1113 |              WritableMap data = mRNCWebViewClient.createWebViewEvent(webView, webView.getUrl());
 | 
	
		
			
			| 1097 | 1114 |              data.putString("data", message);
 | 
	
		
			
			| 1098 |  | -            dispatchEvent(webView, new TopMessageEvent(webView.getId(), data));
 | 
	
		
			
			|  | 1115 | +
 | 
	
		
			
			|  | 1116 | +            if (mCatalystInstance != null) {
 | 
	
		
			
			|  | 1117 | +              mContext.sendDirectMessage(data);
 | 
	
		
			
			|  | 1118 | +            } else {
 | 
	
		
			
			|  | 1119 | +              dispatchEvent(webView, new TopMessageEvent(webView.getId(), data));
 | 
	
		
			
			|  | 1120 | +            }
 | 
	
		
			
			| 1099 | 1121 |            }
 | 
	
		
			
			| 1100 | 1122 |          });
 | 
	
		
			
			| 1101 | 1123 |        } else {
 | 
	
		
			
			| 1102 | 1124 |          WritableMap eventData = Arguments.createMap();
 | 
	
		
			
			| 1103 | 1125 |          eventData.putString("data", message);
 | 
	
		
			
			| 1104 |  | -        dispatchEvent(this, new TopMessageEvent(this.getId(), eventData));
 | 
	
		
			
			|  | 1126 | +
 | 
	
		
			
			|  | 1127 | +        if (mCatalystInstance != null) {
 | 
	
		
			
			|  | 1128 | +          this.sendDirectMessage(eventData);
 | 
	
		
			
			|  | 1129 | +        } else {
 | 
	
		
			
			|  | 1130 | +          dispatchEvent(this, new TopMessageEvent(this.getId(), eventData));
 | 
	
		
			
			|  | 1131 | +        }
 | 
	
		
			
			| 1105 | 1132 |        }
 | 
	
		
			
			| 1106 | 1133 |      }
 | 
	
		
			
			| 1107 | 1134 |  
 | 
	
		
			
			|  | 1135 | +    protected void sendDirectMessage(WritableMap data) {
 | 
	
		
			
			|  | 1136 | +      WritableNativeMap event = new WritableNativeMap();
 | 
	
		
			
			|  | 1137 | +      event.putMap("nativeEvent", data);
 | 
	
		
			
			|  | 1138 | +
 | 
	
		
			
			|  | 1139 | +      WritableNativeArray params = new WritableNativeArray();
 | 
	
		
			
			|  | 1140 | +      params.pushMap(event);
 | 
	
		
			
			|  | 1141 | +
 | 
	
		
			
			|  | 1142 | +      mCatalystInstance.callFunction("WebViewMessageHandler", "onMessage", params);
 | 
	
		
			
			|  | 1143 | +    }
 | 
	
		
			
			|  | 1144 | +
 | 
	
		
			
			| 1108 | 1145 |      protected void onScrollChanged(int x, int y, int oldX, int oldY) {
 | 
	
		
			
			| 1109 | 1146 |        super.onScrollChanged(x, y, oldX, oldY);
 | 
	
		
			
			| 1110 | 1147 |  
 |