@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
61 lines (59 loc) • 2.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.registerNativeBridge = exports.hasNativeBridge = exports.DdSdkInternalNativeBridge = void 0;
var _InternalLog = require("../../InternalLog");
var _SdkVerbosity = require("../../SdkVerbosity");
var _sessionIdHelper = require("../../rum/sessionId/sessionIdHelper");
var _DatadogDefaultEventEmitter = require("../DatadogEventEmitter/DatadogDefaultEventEmitter");
var _DdSdkInternalNativeBridgeEvent = require("./DdSdkInternalNativeBridgeEvent");
/*
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
* This product includes software developed at Datadog (https://www.datadoghq.com/).
* Copyright 2016-Present Datadog, Inc.
*/
const DEFAULT_EVENTS = [new _DdSdkInternalNativeBridgeEvent.DdSdkInternalNativeBridgeEvent('RUMSessionStarted', sessionId => {
(0, _sessionIdHelper.setCachedSessionId)(sessionId);
})];
const defaultErrorHandler = err => {
_InternalLog.InternalLog.log(err, _SdkVerbosity.SdkVerbosity.DEBUG);
};
class DdSdkInternalNativeBridge {
_isInitialized = false;
static get isInitialized() {
return this._instance?._isInitialized ?? false;
}
static initialize(eventEmitter, errorHandler = defaultErrorHandler) {
this._instance = new DdSdkInternalNativeBridge(eventEmitter, errorHandler);
this._instance._isInitialized = eventEmitter.initialize() && this._instance.registerDefaultListeners();
return this._instance;
}
constructor(eventEmitter, errorHandler) {
this.eventEmitter = eventEmitter;
this.errorHandler = errorHandler;
}
registerDefaultListeners() {
try {
DEFAULT_EVENTS.forEach(event => {
this.eventEmitter.addListener(event.eventName, event.callback);
});
return true;
} catch (err) {
this.errorHandler(`An error occured while registering default listeners for event emitter: ${err}`);
return false;
}
}
}
exports.DdSdkInternalNativeBridge = DdSdkInternalNativeBridge;
const registerNativeBridge = (eventEmitter, errorHandler = defaultErrorHandler) => {
const nativeEventEmitter = eventEmitter ?? new _DatadogDefaultEventEmitter.DatadogDefaultEventEmitter(errorHandler);
DdSdkInternalNativeBridge.initialize(nativeEventEmitter);
if (!DdSdkInternalNativeBridge.isInitialized) {
errorHandler('ERROR: Native Bridge initialization failed.');
}
};
exports.registerNativeBridge = registerNativeBridge;
const hasNativeBridge = () => DdSdkInternalNativeBridge.isInitialized;
exports.hasNativeBridge = hasNativeBridge;
//# sourceMappingURL=DdSdkInternalNativeBridge.js.map