UNPKG

cozy-intent

Version:

Event-based library allowing interactions between React-Native and React applications

86 lines (68 loc) 3.15 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.NativeMessenger = exports.DebugNativeMessenger = void 0; var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _postMe = require("post-me"); var _cozyMinilog = _interopRequireDefault(require("cozy-minilog")); var _api = require("../../api"); var logger = (0, _cozyMinilog.default)('cozy-intent'); exports.logger = logger; var log = (0, _postMe.debug)('NativeMessenger'); var NativeMessenger = /*#__PURE__*/(0, _createClass2.default)(function NativeMessenger(webviewRef) { var _this = this, _webviewRef$props$sou; (0, _classCallCheck2.default)(this, NativeMessenger); (0, _defineProperty2.default)(this, "injectJavaScript", void 0); (0, _defineProperty2.default)(this, "listener", void 0); (0, _defineProperty2.default)(this, "webviewUri", void 0); (0, _defineProperty2.default)(this, "postMessage", function (message) { if (message.error) { var _this$webviewUri; logger.warn("Error during intent to ".concat((_this$webviewUri = _this.webviewUri) !== null && _this$webviewUri !== void 0 ? _this$webviewUri : 'undefined webview', " : "), JSON.stringify(message.error)); } try { var _this$injectJavaScrip; var script = "window.postMessage(".concat(JSON.stringify(message), ")"); (_this$injectJavaScrip = _this.injectJavaScript) === null || _this$injectJavaScrip === void 0 ? void 0 : _this$injectJavaScrip.call(_this, script); } catch (_error) { log(_api.strings.noWebviewFound); } }); (0, _defineProperty2.default)(this, "addMessageListener", function (listener) { _this.listener = listener; var removeListener = function removeListener() { return _this.listener = undefined; }; return removeListener; }); (0, _defineProperty2.default)(this, "onMessage", function (data) { if (!_this.listener) return log(_api.strings.noListenerFound); _this.listener({ data: data }); }); this.injectJavaScript = webviewRef.injectJavaScript; this.webviewUri = (_webviewRef$props$sou = webviewRef.props.source.uri) !== null && _webviewRef$props$sou !== void 0 ? _webviewRef$props$sou : webviewRef.props.source.baseUrl; }); exports.NativeMessenger = NativeMessenger; var DebugNativeMessenger = function DebugNativeMessenger(messenger) { return { postMessage: function postMessage(message) { if (message.action !== 'response') log('- OUT', message); messenger.postMessage(message); }, addMessageListener: function addMessageListener(listener) { return messenger.addMessageListener(listener); }, onMessage: function onMessage(data) { log('- IN', data); messenger.onMessage(data); } }; }; exports.DebugNativeMessenger = DebugNativeMessenger;