UNPKG

@sendbird/calls-react-native

Version:

Sendbird Calls SDK for React Native: Empower React Native apps with seamless audio, video, and group calling. Build interactive communication easily.

48 lines (40 loc) 1.31 kB
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import { Logger } from '../utils/logger'; let val = 0; function createUniqueKey() { return val++; } export default class JSEventEmitter { constructor() { _defineProperty(this, "eventPool", {}); } getListenerPool(event) { if (!this.eventPool[event]) this.eventPool[event] = {}; return this.eventPool[event]; } addListener(event, listener) { const uniqKey = createUniqueKey(); const listenerPool = this.getListenerPool(event); listenerPool[uniqKey] = listener; return () => { delete listenerPool[uniqKey]; }; } emit(event) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } setTimeout(() => { const listenerPool = this.getListenerPool(event); const listeners = Object.values(listenerPool); listeners.forEach(listener => { try { listener(...args); } catch (e) { Logger.warn('[JSEventEmitter]', e); } }); }, 0); } } //# sourceMappingURL=JSEventEmitter.js.map