UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

28 lines (23 loc) 1.02 kB
import React from "react"; import { DeviceEventEmitter, NativeModules, Platform } from "react-native"; const { ReactNativeEventBusBridge } = NativeModules; export const useListenEventBusEvent = ( subscriptionID: string, // subsciption ID to manage it, will be used as a event name for DeviceEventEmitter source: string, events: string[], handler: (event) => void ) => { React.useEffect(() => { // TODO: remove after implementing ReactNativeEventBusBridge on iOS if (Platform.OS === "android") { // subscribe to DeviceEventEmitter using subsciption ID const sub = DeviceEventEmitter.addListener(subscriptionID, handler); // ask native to start routing these events to RN ReactNativeEventBusBridge.subscribe(subscriptionID, { [source]: events }); return () => { ReactNativeEventBusBridge.unsubscribe(subscriptionID); // ask EventBus to stop routing these events to RN sub.remove(); // stop listening to DeviceEventEmitter }; } }, []); };