package com.reactnativenavigation.bridge; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter; public class NavigationReactEventEmitter { private static final String KEY_EVENT_ID = "id"; private static final String KEY_EVENT_TYPE = "type"; private static final String KEY_NAVIGATOR_EVENT_ID = "navigatorEventID"; private static final String EVENT_TYPE = "NavBarButtonPress"; private RCTDeviceEventEmitter eventEmitter; public NavigationReactEventEmitter(ReactContext reactContext) { this.eventEmitter = reactContext.getJSModule(RCTDeviceEventEmitter.class); } public void sendNavigatorEvent(String eventId, String navigatorEventId) { WritableMap data = Arguments.createMap(); data.putString(KEY_EVENT_TYPE, EVENT_TYPE); data.putString(KEY_EVENT_ID, eventId); data.putString(KEY_NAVIGATOR_EVENT_ID, navigatorEventId); eventEmitter.emit(navigatorEventId, data); } public void sendNavigatorEvent(String eventId, String navigatorEventId, WritableMap data) { data.putString(KEY_NAVIGATOR_EVENT_ID, navigatorEventId); data.putString(KEY_EVENT_ID, eventId); eventEmitter.emit(navigatorEventId, data); } public void sendEvent(String eventId, String data) { eventEmitter.emit(eventId, data); } public void sendEvent(String eventId, WritableMap data) { eventEmitter.emit(eventId, data); } }