Skip to content

Commit 247e0ec

Browse files
committed
[Android] Move to EventDispatcher instead of RCTEventEmitter
1 parent c9cfc7f commit 247e0ec

File tree

2 files changed

+35
-12
lines changed

2 files changed

+35
-12
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.reactnativemenu
2+
3+
import com.facebook.react.bridge.Arguments
4+
import com.facebook.react.bridge.WritableMap
5+
import com.facebook.react.uimanager.events.Event
6+
7+
class MenuOnPressActionEvent(
8+
surfaceId: Int,
9+
viewTag: Int,
10+
private val event: String?,
11+
private val target: Int
12+
) : Event<MenuOnPressActionEvent>(surfaceId, viewTag) {
13+
14+
override fun getEventName(): String = "onPressAction"
15+
override fun getEventData(): WritableMap = Arguments.createMap().apply {
16+
if (event != null) {
17+
putString("event", event)
18+
}
19+
putString("target", target.toString())
20+
}
21+
}

android/src/main/java/com/reactnativemenu/MenuView.kt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import android.text.style.ForegroundColorSpan
1010
import android.view.*
1111
import android.widget.PopupMenu
1212
import com.facebook.react.bridge.*
13+
import com.facebook.react.uimanager.UIManagerHelper
14+
import com.facebook.react.uimanager.events.Event
1315
import com.facebook.react.uimanager.events.RCTEventEmitter
1416
import com.facebook.react.views.view.ReactViewGroup
1517
import java.lang.reflect.Field
@@ -165,14 +167,14 @@ class MenuView(private val mContext: ReactContext): ReactViewGroup(mContext) {
165167
subMenuItem.setOnMenuItemClickListener {
166168
if (!it.hasSubMenu()) {
167169
mIsMenuDisplayed = false
168-
val args: WritableMap = Arguments.createMap()
169170
if (!subactions.isNull(it.order)) {
170171
val selectedItem = subactions.getMap(it.order)
171-
args.putString("event", selectedItem?.getString("id"))
172-
args.putString("target", "$id")
173-
mContext
174-
.getJSModule(RCTEventEmitter::class.java)
175-
.receiveEvent(id, "onPressAction", args)
172+
val dispatcher =
173+
UIManagerHelper.getEventDispatcherForReactTag(mContext, id)
174+
val surfaceId: Int = UIManagerHelper.getSurfaceId(this)
175+
dispatcher?.dispatchEvent(
176+
MenuOnPressActionEvent(surfaceId, id, selectedItem.getString("id"), id)
177+
)
176178
}
177179
true
178180
} else {
@@ -210,14 +212,14 @@ class MenuView(private val mContext: ReactContext): ReactViewGroup(mContext) {
210212
menuItem.setOnMenuItemClickListener {
211213
if (!it.hasSubMenu()) {
212214
mIsMenuDisplayed = false
213-
val args: WritableMap = Arguments.createMap()
214215
if (!mActions.isNull(it.order)) {
215216
val selectedItem = mActions.getMap(it.order)
216-
args.putString("event", selectedItem?.getString("id"))
217-
args.putString("target", "$id")
218-
mContext
219-
.getJSModule(RCTEventEmitter::class.java)
220-
.receiveEvent(id, "onPressAction", args)
217+
val dispatcher =
218+
UIManagerHelper.getEventDispatcherForReactTag(mContext, id)
219+
val surfaceId: Int = UIManagerHelper.getSurfaceId(this)
220+
dispatcher?.dispatchEvent(
221+
MenuOnPressActionEvent(surfaceId, id, selectedItem.getString("id"), id)
222+
)
221223
}
222224
true
223225
} else {

0 commit comments

Comments
 (0)