1import { DeviceEventEmitter } from 'react-native';
2
3import * as Kernel from '../kernel/Kernel';
4
5const addListenerWithNativeCallback = (
6  eventName: string,
7  eventListener: (event: any) => Promise<any>
8) => {
9  return DeviceEventEmitter.addListener(eventName, async (event) => {
10    try {
11      let result = await eventListener(event);
12      if (!result) {
13        result = {};
14      }
15      Kernel.onEventSuccess(event.eventId, result);
16    } catch (e) {
17      Kernel.onEventFailure(event.eventId, e.message);
18    }
19  });
20};
21
22export default addListenerWithNativeCallback;
23