cozy-intent
Version:
Event-based library allowing interactions between React-Native and React applications
86 lines (68 loc) • 3.14 kB
JavaScript
;
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) {
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;