Skip to content

Commit 326fdbf

Browse files
authored
Merge pull request #273 from fungilation/master
Fixes #272: messages.forEach is not a function
2 parents 4cdb36e + 13b0933 commit 326fdbf

File tree

10 files changed

+140
-24
lines changed

10 files changed

+140
-24
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/android/gradlew

100755100644
File mode changed.

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/RCTWebViewBridge.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ - (void)sendToBridge:(NSString *)message
9999
}
100100
}());
101101
);
102-
102+
103103
// Escape singlequotes or messages containing ' will fail
104104
NSString *quotedMessage = [message stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];
105105

ios/RCTWebViewBridgeManager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
*/
1212

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

1518
@interface RCTWebViewBridgeManager : RCTViewManager
1619

ios/RCTWebViewBridgeManager.m

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ - (UIView *)view
6767
};
6868
}
6969

70+
+ (BOOL)requiresMainQueueSetup
71+
{
72+
return YES;
73+
}
74+
7075
RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
7176
{
7277
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWebViewBridge *> *viewRegistry) {
@@ -81,8 +86,8 @@ - (UIView *)view
8186

8287
RCT_EXPORT_METHOD(goForward:(nonnull NSNumber *)reactTag)
8388
{
84-
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
85-
id view = viewRegistry[reactTag];
89+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWebViewBridge *> *viewRegistry) {
90+
RCTWebViewBridge *view = viewRegistry[reactTag];
8691
if (![view isKindOfClass:[RCTWebViewBridge class]]) {
8792
RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view);
8893
} else {

package.json

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

webview-bridge/index.android.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var React = require('react');
1717
React.createClass = require('create-react-class');
1818
var PropTypes = require('prop-types');
1919
var ReactNative = require('react-native');
20+
var createReactClass = require('create-react-class');
2021
var invariant = require('invariant');
2122
var keyMirror = require('keymirror');
2223
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
@@ -28,6 +29,7 @@ var {
2829
StyleSheet,
2930
Text,
3031
View,
32+
ViewPropTypes,
3133
WebView,
3234
requireNativeComponent,
3335
DeviceEventEmitter,
@@ -50,7 +52,7 @@ var RCTWebViewBridge = requireNativeComponent('RCTWebViewBridge', WebViewBridge)
5052
/**
5153
* Renders a native WebView.
5254
*/
53-
var WebViewBridge = React.createClass({
55+
var WebViewBridge = createReactClass({
5456

5557
propTypes: {
5658
...RCTWebViewBridge.propTypes,

webview-bridge/index.ios.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var React = require('react');
1818
React.createClass = require('create-react-class');
1919
var PropTypes = require('prop-types');
2020
var ReactNative = require('react-native');
21+
var createReactClass = require('create-react-class');
2122
var invariant = require('invariant');
2223
var keyMirror = require('keymirror');
2324
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
@@ -28,12 +29,13 @@ var {
2829
StyleSheet,
2930
Text,
3031
View,
32+
ViewPropTypes,
3133
WebView,
3234
requireNativeComponent,
3335
UIManager,
3436
NativeModules: {
35-
WebViewBridgeManager
36-
}
37+
WebViewBridgeManager,
38+
},
3739
} = ReactNative;
3840
var { PropTypes } = PropTypes;
3941

@@ -92,7 +94,7 @@ var defaultRenderError = (errorDomain, errorCode, errorDesc) => (
9294
/**
9395
* Renders a native WebView.
9496
*/
95-
var WebViewBridge = React.createClass({
97+
var WebViewBridge = createReactClass({
9698
statics: {
9799
JSNavigationScheme: JSNavigationScheme,
98100
NavigationType: NavigationType,
@@ -174,9 +176,10 @@ var WebViewBridge = React.createClass({
174176
const onBridgeMessageCallback = this.props.onBridgeMessage;
175177
if (onBridgeMessageCallback) {
176178
const messages = event.nativeEvent.messages;
177-
messages.forEach((message) => {
178-
onBridgeMessageCallback(message);
179-
});
179+
if (messages && typeof messages.forEach === "function")
180+
messages.forEach((message) => {
181+
onBridgeMessageCallback(message);
182+
});
180183
}
181184
};
182185

@@ -263,7 +266,7 @@ var WebViewBridge = React.createClass({
263266

264267
this.setState({
265268
lastErrorEvent: event.nativeEvent,
266-
viewState: WebViewBridgeState.ERROR
269+
viewState: WebViewBridgeState.ERROR,
267270
});
268271
},
269272

@@ -318,7 +321,7 @@ var styles = StyleSheet.create({
318321
},
319322
webView: {
320323
backgroundColor: '#ffffff',
321-
}
324+
},
322325
});
323326

324327
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)