Skip to content

Commit

Permalink
Merge pull request #273 from fungilation/master
Browse files Browse the repository at this point in the history
Fixes #272: messages.forEach is not a function
  • Loading branch information
chansuke committed Sep 29, 2018
2 parents 4cdb36e + 13b0933 commit 326fdbf
Show file tree
Hide file tree
Showing 10 changed files with 140 additions and 24 deletions.
10 changes: 1 addition & 9 deletions README.md
@@ -1,11 +1,3 @@
# Looking for Maintainer(s)
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.

Please send me your github and npm id so I can add you in.

Thanks!


## Please take a look at this [issue](https://github.com/alinz/react-native-webview-bridge/issues/109) first

# React Native WebView Javascript Bridge
Expand Down Expand Up @@ -154,7 +146,7 @@ const injectScript = `
}());
`;

var Sample2 = React.createClass({
var Sample2 = createReactClass({
onBridgeMessage(message){
const { webviewbridge } = this.refs;

Expand Down
Empty file modified examples/SampleRN20/android/gradlew 100755 → 100644
Empty file.
3 changes: 2 additions & 1 deletion examples/SampleRN20/app.js
Expand Up @@ -11,6 +11,7 @@ var {
View,
WebView
} = React;
var createReactClass = require('create-react-class');

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

Expand All @@ -29,7 +30,7 @@ const injectScript = `
}());
`;

var Sample2 = React.createClass({
var Sample2 = createReactClass({
onBridgeMessage: function (message) {
const { webviewbridge } = this.refs;

Expand Down
2 changes: 1 addition & 1 deletion ios/RCTWebViewBridge.m
Expand Up @@ -99,7 +99,7 @@ - (void)sendToBridge:(NSString *)message
}
}());
);

// Escape singlequotes or messages containing ' will fail
NSString *quotedMessage = [message stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];

Expand Down
3 changes: 3 additions & 0 deletions ios/RCTWebViewBridgeManager.h
Expand Up @@ -11,6 +11,9 @@
*/

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


@interface RCTWebViewBridgeManager : RCTViewManager

Expand Down
9 changes: 7 additions & 2 deletions ios/RCTWebViewBridgeManager.m
Expand Up @@ -67,6 +67,11 @@ - (UIView *)view
};
}

+ (BOOL)requiresMainQueueSetup
{
return YES;
}

RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
{
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWebViewBridge *> *viewRegistry) {
Expand All @@ -81,8 +86,8 @@ - (UIView *)view

RCT_EXPORT_METHOD(goForward:(nonnull NSNumber *)reactTag)
{
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
id view = viewRegistry[reactTag];
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWebViewBridge *> *viewRegistry) {
RCTWebViewBridge *view = viewRegistry[reactTag];
if (![view isKindOfClass:[RCTWebViewBridge class]]) {
RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view);
} else {
Expand Down
5 changes: 3 additions & 2 deletions package.json
Expand Up @@ -30,8 +30,9 @@
},
"homepage": "https://github.com/alinz/react-native-webview-bridge",
"dependencies": {
"invariant": "2.2.0",
"create-react-class": "^15.6.0",
"invariant": "^2.2.2",
"keymirror": "0.1.1",
"create-react-class": "15.6.3"
"prop-types": "^15.5.10"
}
}
4 changes: 3 additions & 1 deletion webview-bridge/index.android.js
Expand Up @@ -17,6 +17,7 @@ var React = require('react');
React.createClass = require('create-react-class');
var PropTypes = require('prop-types');
var ReactNative = require('react-native');
var createReactClass = require('create-react-class');
var invariant = require('invariant');
var keyMirror = require('keymirror');
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
Expand All @@ -28,6 +29,7 @@ var {
StyleSheet,
Text,
View,
ViewPropTypes,
WebView,
requireNativeComponent,
DeviceEventEmitter,
Expand All @@ -50,7 +52,7 @@ var RCTWebViewBridge = requireNativeComponent('RCTWebViewBridge', WebViewBridge)
/**
* Renders a native WebView.
*/
var WebViewBridge = React.createClass({
var WebViewBridge = createReactClass({

propTypes: {
...RCTWebViewBridge.propTypes,
Expand Down
19 changes: 11 additions & 8 deletions webview-bridge/index.ios.js
Expand Up @@ -18,6 +18,7 @@ var React = require('react');
React.createClass = require('create-react-class');
var PropTypes = require('prop-types');
var ReactNative = require('react-native');
var createReactClass = require('create-react-class');
var invariant = require('invariant');
var keyMirror = require('keymirror');
var resolveAssetSource = require('react-native/Libraries/Image/resolveAssetSource');
Expand All @@ -28,12 +29,13 @@ var {
StyleSheet,
Text,
View,
ViewPropTypes,
WebView,
requireNativeComponent,
UIManager,
NativeModules: {
WebViewBridgeManager
}
WebViewBridgeManager,
},
} = ReactNative;
var { PropTypes } = PropTypes;

Expand Down Expand Up @@ -92,7 +94,7 @@ var defaultRenderError = (errorDomain, errorCode, errorDesc) => (
/**
* Renders a native WebView.
*/
var WebViewBridge = React.createClass({
var WebViewBridge = createReactClass({
statics: {
JSNavigationScheme: JSNavigationScheme,
NavigationType: NavigationType,
Expand Down Expand Up @@ -174,9 +176,10 @@ var WebViewBridge = React.createClass({
const onBridgeMessageCallback = this.props.onBridgeMessage;
if (onBridgeMessageCallback) {
const messages = event.nativeEvent.messages;
messages.forEach((message) => {
onBridgeMessageCallback(message);
});
if (messages && typeof messages.forEach === "function")
messages.forEach((message) => {
onBridgeMessageCallback(message);
});
}
};

Expand Down Expand Up @@ -263,7 +266,7 @@ var WebViewBridge = React.createClass({

this.setState({
lastErrorEvent: event.nativeEvent,
viewState: WebViewBridgeState.ERROR
viewState: WebViewBridgeState.ERROR,
});
},

Expand Down Expand Up @@ -318,7 +321,7 @@ var styles = StyleSheet.create({
},
webView: {
backgroundColor: '#ffffff',
}
},
});

module.exports = WebViewBridge;
109 changes: 109 additions & 0 deletions yarn.lock
@@ -0,0 +1,109 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1


asap@~2.0.3:
version "2.0.6"
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"

core-js@^1.0.0:
version "1.2.7"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"

create-react-class@^15.6.0:
version "15.6.2"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a"
dependencies:
fbjs "^0.8.9"
loose-envify "^1.3.1"
object-assign "^4.1.1"

encoding@^0.1.11:
version "0.1.12"
resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb"
dependencies:
iconv-lite "~0.4.13"

fbjs@^0.8.16, fbjs@^0.8.9:
version "0.8.16"
resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db"
dependencies:
core-js "^1.0.0"
isomorphic-fetch "^2.1.1"
loose-envify "^1.0.0"
object-assign "^4.1.0"
promise "^7.1.1"
setimmediate "^1.0.5"
ua-parser-js "^0.7.9"

iconv-lite@~0.4.13:
version "0.4.19"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b"

invariant@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
dependencies:
loose-envify "^1.0.0"

is-stream@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"

isomorphic-fetch@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9"
dependencies:
node-fetch "^1.0.1"
whatwg-fetch ">=0.10.0"

js-tokens@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"

keymirror@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/keymirror/-/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35"

loose-envify@^1.0.0, loose-envify@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
dependencies:
js-tokens "^3.0.0"

node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
dependencies:
encoding "^0.1.11"
is-stream "^1.0.1"

object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"

promise@^7.1.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
dependencies:
asap "~2.0.3"

prop-types@^15.5.10:
version "15.6.0"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856"
dependencies:
fbjs "^0.8.16"
loose-envify "^1.3.1"
object-assign "^4.1.1"

setimmediate@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"

ua-parser-js@^0.7.9:
version "0.7.17"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"

whatwg-fetch@>=0.10.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84"

0 comments on commit 326fdbf

Please sign in to comment.