UNPKG

1.2 kBTypeScriptView Raw
1import type {
2 NativeEventSubscription,
3 EmitterSubscription,
4} from 'react-native';
5
6export function addEventListener<
7 T extends {
8 addEventListener: (
9 ...args: any
10 ) => NativeEventSubscription | EmitterSubscription;
11 removeEventListener: (...args: any) => void;
12 }
13>(Module: T, ...rest: Parameters<typeof Module.addEventListener>) {
14 const [eventName, handler] = rest;
15
16 let removed = false;
17
18 const subscription = Module.addEventListener(eventName, handler) ?? {
19 remove: () => {
20 if (removed) {
21 return;
22 }
23
24 Module.removeEventListener(eventName, handler);
25 removed = true;
26 },
27 };
28
29 return subscription;
30}
31
32export function addListener<
33 T extends {
34 addListener: (...args: any) => EmitterSubscription;
35 removeEventListener: (...args: any) => void;
36 }
37>(Module: T, ...rest: Parameters<typeof Module.addListener>) {
38 const [eventName, handler] = rest;
39
40 let removed = false;
41
42 const subscription = Module.addListener(eventName, handler) ?? {
43 remove: () => {
44 if (removed) {
45 return;
46 }
47
48 Module.removeEventListener(eventName, handler);
49 removed = true;
50 },
51 };
52
53 return subscription;
54}