Skip to content

Commit c730087

Browse files
committed
create-react-class, prop-types as drop-in replacements
Fixes and tested working in RN 0.51
1 parent 45a330f commit c730087

File tree

8 files changed

+138
-21
lines changed

8 files changed

+138
-21
lines changed

README.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
# Looking for Maintainer(s)
2-
I have been really busy and I can't continue maintaing this repo alone. I would like to ask if anyone wants to help I can grant a permission both on github and npm to start merging a lot of request and dealing with issues.
3-
4-
Please send me your github and npm id so I can add you in.
5-
6-
Thanks!
7-
8-
91
## Please take a look at this [issue](https://github.com/alinz/react-native-webview-bridge/issues/109) first
102

113
# React Native WebView Javascript Bridge
@@ -154,7 +146,7 @@ const injectScript = `
154146
}());
155147
`;
156148

157-
var Sample2 = React.createClass({
149+
var Sample2 = createReactClass({
158150
onBridgeMessage(message){
159151
const { webviewbridge } = this.refs;
160152

examples/SampleRN20/app.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var {
1111
View,
1212
WebView
1313
} = React;
14+
var createReactClass = require('create-react-class');
1415

1516
var WebViewBridge = require('react-native-webview-bridge');
1617

@@ -29,7 +30,7 @@ const injectScript = `
2930
}());
3031
`;
3132

32-
var Sample2 = React.createClass({
33+
var Sample2 = createReactClass({
3334
onBridgeMessage: function (message) {
3435
const { webviewbridge } = this.refs;
3536

ios/RCTWebViewBridgeManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
#import <React/RCTViewManager.h>
1414
#import <React/RCTUIManager.h>
15+
// #import <React/RCTBridge.h> // in forked https://github.com/lefnire/react-native-webview-bridge
1516

1617
#import "RCTWebViewBridge.h"
1718

ios/RCTWebViewBridgeManager.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ - (UIView *)view
6262
};
6363
}
6464

65+
+ (BOOL)requiresMainQueueSetup
66+
{
67+
return YES;
68+
}
69+
6570
RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
6671
{
6772
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWebViewBridge *> *viewRegistry) {

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
},
3131
"homepage": "https://github.com/alinz/react-native-webview-bridge",
3232
"dependencies": {
33-
"invariant": "2.2.0",
34-
"keymirror": "0.1.1"
33+
"create-react-class": "^15.6.0",
34+
"invariant": "^2.2.2",
35+
"keymirror": "0.1.1",
36+
"prop-types": "^15.5.10"
3537
}
3638
}

webview-bridge/index.android.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
var React = require('react');
1717
var ReactNative = require('react-native');
18+
var createReactClass = require('create-react-class');
1819
var invariant = require('invariant');
1920
var keyMirror = require('keymirror');
2021
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
@@ -26,14 +27,15 @@ var {
2627
StyleSheet,
2728
Text,
2829
View,
30+
ViewPropTypes,
2931
WebView,
3032
requireNativeComponent,
3133
DeviceEventEmitter,
3234
NativeModules: {
3335
WebViewBridgeManager
3436
}
3537
} = ReactNative;
36-
var { PropTypes } = React;
38+
var PropTypes = require('prop-types');
3739

3840
var RCT_WEBVIEWBRIDGE_REF = 'webviewbridge';
3941

@@ -48,7 +50,7 @@ var RCTWebViewBridge = requireNativeComponent('RCTWebViewBridge', WebViewBridge)
4850
/**
4951
* Renders a native WebView.
5052
*/
51-
var WebViewBridge = React.createClass({
53+
var WebViewBridge = createReactClass({
5254

5355
propTypes: {
5456
...RCTWebViewBridge.propTypes,

webview-bridge/index.ios.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414
*/
1515
'use strict';
1616

17-
var React = require('react');
17+
// HACKFIX: https://github.com/facebook/metro-bundler/issues/74 - error: bundling failed: UnableToResolveError: Unable to resolve module `react` from `/Users/garyfung/Dropbox/Code/react-native-webview-bridge-RN0.40/webview-bridge/index.ios.js`: Module does not exist in the module map
18+
// do same in node_modules/create-react-class/index.js on npm/yarn upgrade
19+
// NOTE: metro bundler can't find react because node_modules symlink to this local package on ~/Dropbox?
20+
var React = require('/Users/garyfung/Documents/code/WonderSwipe/node_modules/react');
1821
var ReactNative = require('react-native');
22+
var createReactClass = require('create-react-class');
1923
var invariant = require('invariant');
2024
var keyMirror = require('keymirror');
2125
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
@@ -26,14 +30,15 @@ var {
2630
StyleSheet,
2731
Text,
2832
View,
33+
ViewPropTypes,
2934
WebView,
3035
requireNativeComponent,
3136
UIManager,
3237
NativeModules: {
33-
WebViewBridgeManager
34-
}
38+
WebViewBridgeManager,
39+
},
3540
} = ReactNative;
36-
var { PropTypes } = React;
41+
var PropTypes = require('prop-types');
3742

3843
var BGWASH = 'rgba(255,255,255,0.8)';
3944
var RCT_WEBVIEWBRIDGE_REF = 'webviewbridge';
@@ -90,7 +95,7 @@ var defaultRenderError = (errorDomain, errorCode, errorDesc) => (
9095
/**
9196
* Renders a native WebView.
9297
*/
93-
var WebViewBridge = React.createClass({
98+
var WebViewBridge = createReactClass({
9499
statics: {
95100
JSNavigationScheme: JSNavigationScheme,
96101
NavigationType: NavigationType,
@@ -261,7 +266,7 @@ var WebViewBridge = React.createClass({
261266

262267
this.setState({
263268
lastErrorEvent: event.nativeEvent,
264-
viewState: WebViewBridgeState.ERROR
269+
viewState: WebViewBridgeState.ERROR,
265270
});
266271
},
267272

@@ -316,7 +321,7 @@ var styles = StyleSheet.create({
316321
},
317322
webView: {
318323
backgroundColor: '#ffffff',
319-
}
324+
},
320325
});
321326

322327
module.exports = WebViewBridge;

yarn.lock

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
asap@~2.0.3:
6+
version "2.0.6"
7+
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
8+
9+
core-js@^1.0.0:
10+
version "1.2.7"
11+
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
12+
13+
create-react-class@^15.6.0:
14+
version "15.6.2"
15+
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
16+
dependencies:
17+
fbjs "^0.8.9"
18+
loose-envify "^1.3.1"
19+
object-assign "^4.1.1"
20+
21+
encoding@^0.1.11:
22+
version "0.1.12"
23+
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
24+
dependencies:
25+
iconv-lite "~0.4.13"
26+
27+
fbjs@^0.8.16, fbjs@^0.8.9:
28+
version "0.8.16"
29+
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
30+
dependencies:
31+
core-js "^1.0.0"
32+
isomorphic-fetch "^2.1.1"
33+
loose-envify "^1.0.0"
34+
object-assign "^4.1.0"
35+
promise "^7.1.1"
36+
setimmediate "^1.0.5"
37+
ua-parser-js "^0.7.9"
38+
39+
iconv-lite@~0.4.13:
40+
version "0.4.19"
41+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"
42+
43+
invariant@^2.2.2:
44+
version "2.2.2"
45+
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
46+
dependencies:
47+
loose-envify "^1.0.0"
48+
49+
is-stream@^1.0.1:
50+
version "1.1.0"
51+
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
52+
53+
isomorphic-fetch@^2.1.1:
54+
version "2.2.1"
55+
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
56+
dependencies:
57+
node-fetch "^1.0.1"
58+
whatwg-fetch ">=0.10.0"
59+
60+
js-tokens@^3.0.0:
61+
version "3.0.2"
62+
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
63+
64+
keymirror@0.1.1:
65+
version "0.1.1"
66+
resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35"
67+
68+
loose-envify@^1.0.0, loose-envify@^1.3.1:
69+
version "1.3.1"
70+
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
71+
dependencies:
72+
js-tokens "^3.0.0"
73+
74+
node-fetch@^1.0.1:
75+
version "1.7.3"
76+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
77+
dependencies:
78+
encoding "^0.1.11"
79+
is-stream "^1.0.1"
80+
81+
object-assign@^4.1.0, object-assign@^4.1.1:
82+
version "4.1.1"
83+
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
84+
85+
promise@^7.1.1:
86+
version "7.3.1"
87+
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
88+
dependencies:
89+
asap "~2.0.3"
90+
91+
prop-types@^15.5.10:
92+
version "15.6.0"
93+
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
94+
dependencies:
95+
fbjs "^0.8.16"
96+
loose-envify "^1.3.1"
97+
object-assign "^4.1.1"
98+
99+
setimmediate@^1.0.5:
100+
version "1.0.5"
101+
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
102+
103+
ua-parser-js@^0.7.9:
104+
version "0.7.17"
105+
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
106+
107+
whatwg-fetch@>=0.10.0:
108+
version "2.0.3"
109+
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"

0 commit comments

Comments
 (0)