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.

46 lines (45 loc) 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _logger = require("../utils/logger"); function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } let val = 0; function createUniqueKey() { return val++; } 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, ...args) { setTimeout(() => { const listenerPool = this.getListenerPool(event); const listeners = Object.values(listenerPool); listeners.forEach(listener => { try { listener(...args); } catch (e) { _logger.Logger.warn('[JSEventEmitter]', e); } }); }, 0); } } exports.default = JSEventEmitter; //# sourceMappingURL=JSEventEmitter.js.map