-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.js
49 lines (43 loc) · 1.22 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { NativeEventEmitter, NativeModules } from 'react-native';
const { RNCaptureTraffic } = NativeModules;
const eventEmitter = new NativeEventEmitter(RNCaptureTraffic);
const eventMap = {
serviceStarted: 'onServiceStarted',
serviceStopped: 'onServiceStopped',
};
const _subscriptions = new Map();
const addEventListener = (event, handler) => {
const mappedEvent = eventMap[event];
if (mappedEvent) {
const listener = eventEmitter.addListener(mappedEvent, handler);
_subscriptions.set(handler, listener);
return {
remove: () => removeEventListener(event, handler),
};
} else {
console.warn(`Trying to subscribe to unknown event: "${event}"`);
return {
remove: () => {},
};
}
};
const removeEventListener = (type, handler) => {
const listener = _subscriptions.get(handler);
if (!listener) {
return;
}
listener.remove();
_subscriptions.delete(handler);
};
const removeAllListeners = () => {
_subscriptions.forEach((listener, key, map) => {
listener.remove();
map.delete(key);
});
};
export default {
...RNCaptureTraffic,
addEventListener,
removeEventListener,
removeAllListeners,
};