UNPKG

@datadog/mobile-react-native

Version:

A client-side React Native module to interact with Datadog

41 lines (39 loc) 1.45 kB
/* * 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