Skip to content

Commit 1a7b392

Browse files
authored
chore: refactor android event dispatching (#197)
1 parent 2526db9 commit 1a7b392

File tree

4 files changed

+17
-28
lines changed

4 files changed

+17
-28
lines changed

.changeset/smooth-terms-compete.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'react-native-bottom-tabs': patch
3+
---
4+
5+
chore: refactor android event dispatching

packages/react-native-bottom-tabs/android/src/main/java/com/rcttabview/RCTTabView.kt

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import android.widget.TextView
1818
import androidx.appcompat.content.res.AppCompatResources
1919
import coil3.ImageLoader
2020
import coil3.asDrawable
21-
import com.facebook.react.bridge.Arguments
2221
import com.facebook.react.bridge.ReadableArray
23-
import com.facebook.react.bridge.WritableMap
2422
import com.facebook.react.common.assets.ReactFontManager
2523
import com.facebook.react.modules.core.ReactChoreographer
2624
import com.facebook.react.views.text.ReactTypefaceUtils
@@ -33,8 +31,8 @@ class ReactBottomNavigationView(context: Context) : BottomNavigationView(context
3331
private val iconSources: MutableMap<Int, ImageSource> = mutableMapOf()
3432
private var isLayoutEnqueued = false
3533
var items: MutableList<TabInfo>? = null
36-
var onTabSelectedListener: ((WritableMap) -> Unit)? = null
37-
var onTabLongPressedListener: ((WritableMap) -> Unit)? = null
34+
var onTabSelectedListener: ((key: String) -> Unit)? = null
35+
var onTabLongPressedListener: ((key: String) -> Unit)? = null
3836
private var activeTintColor: Int? = null
3937
private var inactiveTintColor: Int? = null
4038
private val checkedStateSet = intArrayOf(android.R.attr.state_checked)
@@ -62,10 +60,7 @@ class ReactBottomNavigationView(context: Context) : BottomNavigationView(context
6260
private fun onTabLongPressed(item: MenuItem) {
6361
val longPressedItem = items?.firstOrNull { it.title == item.title }
6462
longPressedItem?.let {
65-
val event = Arguments.createMap().apply {
66-
putString("key", longPressedItem.key)
67-
}
68-
onTabLongPressedListener?.invoke(event)
63+
onTabLongPressedListener?.invoke(longPressedItem.key)
6964
emitHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
7065
}
7166
}
@@ -93,10 +88,7 @@ class ReactBottomNavigationView(context: Context) : BottomNavigationView(context
9388
}
9489
val selectedItem = items?.first { it.title == item.title }
9590
selectedItem?.let {
96-
val event = Arguments.createMap().apply {
97-
putString("key", selectedItem.key)
98-
}
99-
onTabSelectedListener?.invoke(event)
91+
onTabSelectedListener?.invoke(selectedItem.key)
10092
emitHapticFeedback(HapticFeedbackConstants.CONTEXT_CLICK)
10193
}
10294
}

packages/react-native-bottom-tabs/android/src/newarch/RCTTabViewManager.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,12 @@ class RCTTabViewManager(context: ReactApplicationContext) :
3030
override fun createViewInstance(context: ThemedReactContext): ReactBottomNavigationView {
3131
val view = ReactBottomNavigationView(context)
3232
val eventDispatcher = UIManagerHelper.getEventDispatcherForReactTag(context, view.id)
33-
view.onTabSelectedListener = { data ->
34-
data.getString("key")?.let {
35-
eventDispatcher?.dispatchEvent(PageSelectedEvent(viewTag = view.id, key = it))
36-
}
33+
view.onTabSelectedListener = { key ->
34+
eventDispatcher?.dispatchEvent(PageSelectedEvent(viewTag = view.id, key))
3735
}
3836

39-
view.onTabLongPressedListener = { data ->
40-
data.getString("key")?.let {
41-
eventDispatcher?.dispatchEvent(TabLongPressEvent(viewTag = view.id, key = it))
42-
}
37+
view.onTabLongPressedListener = { key ->
38+
eventDispatcher?.dispatchEvent(TabLongPressEvent(viewTag = view.id, key))
4339
}
4440
return view
4541

packages/react-native-bottom-tabs/android/src/oldarch/RCTTabViewManager.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,12 @@ class RCTTabViewManager(context: ReactApplicationContext) : SimpleViewManager<Re
2727
public override fun createViewInstance(context: ThemedReactContext): ReactBottomNavigationView {
2828
eventDispatcher = context.getNativeModule(UIManagerModule::class.java)!!.eventDispatcher
2929
val view = ReactBottomNavigationView(context)
30-
view.onTabSelectedListener = { data ->
31-
data.getString("key")?.let {
32-
eventDispatcher.dispatchEvent(PageSelectedEvent(viewTag = view.id, key = it))
33-
}
30+
view.onTabSelectedListener = { key ->
31+
eventDispatcher.dispatchEvent(PageSelectedEvent(viewTag = view.id, key))
3432
}
3533

36-
view.onTabLongPressedListener = { data ->
37-
data.getString("key")?.let {
38-
eventDispatcher.dispatchEvent(TabLongPressEvent(viewTag = view.id, key = it))
39-
}
34+
view.onTabLongPressedListener = { key ->
35+
eventDispatcher.dispatchEvent(TabLongPressEvent(viewTag = view.id, key))
4036
}
4137
return view
4238
}

0 commit comments

Comments
 (0)