UNPKG

2.54 kBJavaScriptView Raw
1'use strict';var reactNativeFlipper=require("react-native-flipper");function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}var ConnectionManager=function(){function a(b){_classCallCheck(this,a),_defineProperty(this,"webSocket",void 0),this.webSocket=new WebSocket(b)}return _createClass(a,[{key:"send",value:function(a){1===this.webSocket.readyState&&this.webSocket.send(a)}},{key:"on",value:function(a,b){"open"===a?this.webSocket.onopen=b:"message"==a&&(this.webSocket.onmessage=function(a){return b(a.data)})}},{key:"close",value:function(){this.webSocket.close()}}]),a}(),FlipperConnectionManager=function(){function a(b){var c=this;_classCallCheck(this,a),_defineProperty(this,"baseConnectionManager",void 0),_defineProperty(this,"flipperConnection",void 0),_defineProperty(this,"openCallbacks",[]),_defineProperty(this,"closeCallbacks",[]),_defineProperty(this,"messageCallbacks",[]),_defineProperty(this,"handleConnect",function(a){c.flipperConnection=a,a.receive("sendReactotronCommand",function(a,b){c.handleMessage(a),b.success()}),c.openCallbacks.forEach(function(a){return a()})}),_defineProperty(this,"handleMessage",function(a){c.messageCallbacks.forEach(function(b){return b(a)})}),_defineProperty(this,"handleDisconnect",function(){c.flipperConnection=null,c.closeCallbacks.forEach(function(a){return a()})}),this.baseConnectionManager=new ConnectionManager(b),reactNativeFlipper.addPlugin({getId:function(){return"flipper-plugin-reactotron"},onConnect:this.handleConnect,onDisconnect:this.handleDisconnect,runInBackground:function(){return!0}})}return _createClass(a,[{key:"send",value:function(a){this.baseConnectionManager.send(a),this.flipperConnection&&this.flipperConnection.send("Command",JSON.parse(a))}},{key:"on",value:function(a,b){this.baseConnectionManager.on(a,b),"open"===a?(this.flipperConnection&&b(),this.openCallbacks.push(b)):"close"===a?this.closeCallbacks.push(b):"message"===a?this.messageCallbacks.push(b):void 0}},{key:"close",value:function(){this.baseConnectionManager.close()}}]),a}();module.exports=FlipperConnectionManager;