Skip to content

Commit eb2e36c

Browse files
committed
fix: use TabViewImpl to share code across architectures
1 parent 01a7521 commit eb2e36c

File tree

3 files changed

+44
-24
lines changed

3 files changed

+44
-24
lines changed

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.rcttabview
22

33
import android.content.res.ColorStateList
4+
import android.view.View
5+
import android.view.ViewGroup
46
import com.facebook.react.bridge.ReadableArray
57
import com.facebook.react.common.MapBuilder
68
import com.rcttabview.events.OnNativeLayoutEvent
@@ -93,6 +95,36 @@ class RCTTabViewImpl {
9395
)
9496
}
9597

98+
fun getChildCount(parent: ReactBottomNavigationView): Int {
99+
return parent.viewPagerAdapter.itemCount ?: 0
100+
}
101+
102+
fun getChildAt(parent: ReactBottomNavigationView, index: Int): View? {
103+
return parent.viewPagerAdapter.getChildAt(index)
104+
}
105+
106+
fun removeView(parent: ReactBottomNavigationView, view: View) {
107+
parent.viewPagerAdapter.removeChild(view)
108+
}
109+
110+
fun removeAllViews(parent: ReactBottomNavigationView) {
111+
parent.viewPagerAdapter.removeAll()
112+
}
113+
114+
fun removeViewAt(parent: ReactBottomNavigationView, index: Int) {
115+
val child = parent.viewPagerAdapter.getChildAt(index)
116+
117+
if (child.parent != null) {
118+
(child.parent as? ViewGroup)?.removeView(child)
119+
}
120+
121+
parent.viewPagerAdapter.removeChildAt(index)
122+
}
123+
124+
fun needsCustomLayoutForChildren(): Boolean {
125+
return true
126+
}
127+
96128
companion object {
97129
const val NAME = "RNCTabView"
98130
}

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

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,33 +48,27 @@ class RCTTabViewManager(context: ReactApplicationContext) :
4848
}
4949

5050
override fun getChildCount(parent: ReactBottomNavigationView): Int {
51-
return parent.viewPagerAdapter.itemCount ?: 0
51+
return tabViewImpl.getChildCount(parent)
5252
}
5353

5454
override fun getChildAt(parent: ReactBottomNavigationView, index: Int): View? {
55-
return parent.viewPagerAdapter.getChildAt(index)
55+
return tabViewImpl.getChildAt(parent, index)
5656
}
5757

5858
override fun removeView(parent: ReactBottomNavigationView, view: View) {
59-
parent.viewPagerAdapter.removeChild(view)
59+
tabViewImpl.removeView(parent, view)
6060
}
6161

6262
override fun removeAllViews(parent: ReactBottomNavigationView) {
63-
parent.viewPagerAdapter.removeAll()
63+
tabViewImpl.removeAllViews(parent)
6464
}
6565

6666
override fun removeViewAt(parent: ReactBottomNavigationView, index: Int) {
67-
val child = parent.viewPagerAdapter.getChildAt(index)
68-
69-
if (child.parent != null) {
70-
(child.parent as? ViewGroup)?.removeView(child)
71-
}
72-
73-
parent.viewPagerAdapter.removeChildAt(index)
67+
tabViewImpl.removeViewAt(parent, index)
7468
}
7569

7670
override fun needsCustomLayoutForChildren(): Boolean {
77-
return true
71+
return tabViewImpl.needsCustomLayoutForChildren()
7872
}
7973

8074
override fun setItems(view: ReactBottomNavigationView?, value: ReadableArray?) {

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

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,33 +41,27 @@ class RCTTabViewManager(context: ReactApplicationContext) : ViewGroupManager<Rea
4141
}
4242

4343
override fun getChildCount(parent: ReactBottomNavigationView): Int {
44-
return parent.viewPagerAdapter.itemCount ?: 0
44+
return tabViewImpl.getChildCount(parent)
4545
}
4646

4747
override fun getChildAt(parent: ReactBottomNavigationView, index: Int): View? {
48-
return parent.viewPagerAdapter.getChildAt(index)
48+
return tabViewImpl.getChildAt(parent, index)
4949
}
5050

5151
override fun removeView(parent: ReactBottomNavigationView, view: View) {
52-
parent.viewPagerAdapter.removeChild(view)
52+
tabViewImpl.removeView(parent, view)
5353
}
5454

5555
override fun removeAllViews(parent: ReactBottomNavigationView) {
56-
parent.viewPagerAdapter.removeAll()
56+
tabViewImpl.removeAllViews(parent)
5757
}
5858

5959
override fun removeViewAt(parent: ReactBottomNavigationView, index: Int) {
60-
val child = parent.viewPagerAdapter.getChildAt(index)
61-
62-
if (child.parent != null) {
63-
(child.parent as? ViewGroup)?.removeView(child)
64-
}
65-
66-
parent.viewPagerAdapter.removeChildAt(index)
60+
tabViewImpl.removeViewAt(parent, index)
6761
}
6862

6963
override fun needsCustomLayoutForChildren(): Boolean {
70-
return true
64+
return tabViewImpl.needsCustomLayoutForChildren()
7165
}
7266

7367
override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any>? {

0 commit comments

Comments
 (0)