@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
41 lines (39 loc) • 1.45 kB
JavaScript
/*
* 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.
*/
export class DatadogBatchedBridgeEventEmitter {
constructor(errorHandler) {
this.errorHandler = errorHandler;
this.listeners = {};
}
initialize() {
try {
// eslint-disable-next-line global-require, @typescript-eslint/no-var-requires
const BatchedBridge = require('react-native/Libraries/BatchedBridge/BatchedBridge');
const batchedBridge = BatchedBridge.default ?? BatchedBridge;
batchedBridge.registerCallableModule('DatadogInternalReactBridge', this);
return true;
} catch (err) {
this.errorHandler(`ERROR: cannot initialize BatchedBridge: ${err}`);
return false;
}
}
addListener(eventName, callback) {
this.listeners[eventName] = callback;
}
removeAllListeners(eventName) {
delete this.listeners[eventName];
}
// Called directly from native layer.
__datadogOnMessageReceived(eventName, data) {
const callback = this.listeners[eventName];
if (!callback) {
this.errorHandler(`ERROR: No listeners registered for received event ${eventName} with data: ${JSON.stringify(data, null, 4)}`);
return;
}
callback(data);
}
}
//# sourceMappingURL=DatadogBatchedBridgeEventEmitter.js.map