2015-07-13 13:55:56 -04:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var React = require('react-native');
|
|
|
|
|
|
|
|
|
|
var {
|
|
|
|
|
WebView,
|
|
|
|
|
Component,
|
|
|
|
|
NativeModules: {
|
|
|
|
|
WebViewManager
|
|
|
|
|
}
|
|
|
|
|
} = React;
|
|
|
|
|
|
|
|
|
|
var WEB_VIEW_BRIDGE_REF = 'WEBVIEW_BRIDGE';
|
|
|
|
|
|
|
|
|
|
class WebViewBridge extends Component {
|
|
|
|
|
constructor(props) {
|
|
|
|
|
super(props);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-14 13:53:03 -04:00
|
|
|
onMessage(cb) {
|
|
|
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
|
|
|
WebViewManager.onMessage(ref.getWebWiewHandle(), cb);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-13 13:55:56 -04:00
|
|
|
evalScript(value) {
|
|
|
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
|
|
|
WebViewManager.eval(ref.getWebWiewHandle(), value);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-14 13:53:03 -04:00
|
|
|
send(message) {
|
|
|
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
|
|
|
|
|
|
|
|
|
if (typeof message !== 'string') {
|
|
|
|
|
message = JSON.stringify(message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WebViewManager.send(ref.getWebWiewHandle(), message);
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-14 12:22:25 -04:00
|
|
|
componentDidMount() {
|
|
|
|
|
//setup the internal variables of webview bridge
|
2015-07-13 16:09:24 -04:00
|
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
2015-07-14 12:22:25 -04:00
|
|
|
WebViewManager.bridgeSetup(ref.getWebWiewHandle());
|
|
|
|
|
|
|
|
|
|
//inject script into webView
|
2015-07-13 16:09:24 -04:00
|
|
|
WebViewManager.injectBridgeScript(ref.getWebWiewHandle());
|
|
|
|
|
}
|
|
|
|
|
|
2015-07-14 12:22:25 -04:00
|
|
|
componentWillUnmount() {
|
|
|
|
|
var ref = this.refs[WEB_VIEW_BRIDGE_REF];
|
2015-07-14 13:53:03 -04:00
|
|
|
WebViewManager.callbackCleanup(ref.getWebWiewHandle());
|
2015-07-14 12:22:25 -04:00
|
|
|
}
|
|
|
|
|
|
2015-07-13 13:55:56 -04:00
|
|
|
render() {
|
|
|
|
|
return (
|
|
|
|
|
<WebView
|
|
|
|
|
ref={WEB_VIEW_BRIDGE_REF}
|
|
|
|
|
{...this.props}/>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module.exports = WebViewBridge;
|