@react-native-tapsell-mediation/tapsell
Version:
Tapsell Mediation package
43 lines (37 loc) • 1.29 kB
text/typescript
import { type EmitterSubscription, NativeEventEmitter } from 'react-native';
import type { NativeModule } from 'react-native/Libraries/EventEmitter/NativeEventEmitter';
export class TapsellEventEmitter {
private readonly emitter: NativeEventEmitter | undefined;
private subscriptions: Map<string, EmitterSubscription> = new Map();
constructor(nativeModule: NativeModule) {
try {
this.emitter = new NativeEventEmitter(nativeModule);
} catch (e) {
console.error('Failed to initialize native event emitter:', e);
}
}
public addListener(
eventType: string,
listener: (...args: any[]) => void
): void {
if (this.emitter) {
const subscription = this.emitter.addListener(eventType, listener);
this.subscriptions.set(eventType, subscription);
} else {
console.warn(
'Native event emitter is not available. Listener not added.'
);
}
}
public removeListener(eventType: string): void {
const subscription = this.subscriptions.get(eventType);
if (subscription) {
subscription.remove();
this.subscriptions.delete(eventType);
}
}
public removeAllListeners(): void {
this.subscriptions.forEach((subscription) => subscription.remove());
this.subscriptions.clear();
}
}