Skip to content

Commit f0117da

Browse files
committed
fix: paper arch
1 parent 0f9a5fe commit f0117da

File tree

4 files changed

+49
-19
lines changed

4 files changed

+49
-19
lines changed

android/src/fabric/java/com/reactnativekeyboardcontroller/KeyboardControllerViewManager.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,9 @@ class KeyboardControllerViewManager(
1818
KeyboardControllerViewManagerInterface<ReactViewGroup> {
1919
private val manager = KeyboardControllerViewManagerImpl(mReactContext)
2020
private val mDelegate = KeyboardControllerViewManagerDelegate(this)
21-
private var listener : WindowDimensionListener? = null
22-
23-
override fun getDelegate(): ViewManagerDelegate<ReactViewGroup> = mDelegate
24-
25-
override fun getName(): String = KeyboardControllerViewManagerImpl.NAME
21+
private var listener: WindowDimensionListener? = null
2622

23+
// region Lifecycle
2724
override fun createViewInstance(context: ThemedReactContext): ReactViewGroup {
2825
if (listener == null) {
2926
listener = WindowDimensionListener(context)
@@ -42,6 +39,14 @@ class KeyboardControllerViewManager(
4239
manager.setEdgeToEdge(view as EdgeToEdgeReactViewGroup)
4340
}
4441

42+
override fun onDropViewInstance(view: ReactViewGroup) {
43+
super.onDropViewInstance(view)
44+
(view as EdgeToEdgeReactViewGroup).setActive(false)
45+
view.removeWindowInsetsListener()
46+
}
47+
// endregion
48+
49+
// region Props setters
4550
@ReactProp(name = "statusBarTranslucent")
4651
override fun setStatusBarTranslucent(
4752
view: ReactViewGroup,
@@ -65,13 +70,14 @@ class KeyboardControllerViewManager(
6570
view: ReactViewGroup,
6671
value: Boolean,
6772
) = manager.setEnabled(view as EdgeToEdgeReactViewGroup, value)
73+
// endregion
6874

69-
override fun onDropViewInstance(view: ReactViewGroup) {
70-
super.onDropViewInstance(view)
71-
(view as EdgeToEdgeReactViewGroup).setActive(false)
72-
view.removeWindowInsetsListener()
73-
}
74-
75+
// region Constants
7576
override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any> =
7677
manager.getExportedCustomDirectEventTypeConstants()
78+
79+
override fun getDelegate(): ViewManagerDelegate<ReactViewGroup> = mDelegate
80+
81+
override fun getName(): String = KeyboardControllerViewManagerImpl.NAME
82+
// endregion
7783
}

android/src/main/java/com/reactnativekeyboardcontroller/extensions/ThemedReactContext.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.facebook.react.uimanager.ThemedReactContext
1010
import com.facebook.react.uimanager.UIManagerHelper
1111
import com.facebook.react.uimanager.events.Event
1212
import com.facebook.react.uimanager.events.EventDispatcher
13-
import com.reactnativekeyboardcontroller.listeners.WindowDimensionListener
1413
import com.reactnativekeyboardcontroller.log.Logger
1514

1615
fun ThemedReactContext?.dispatchEvent(

android/src/main/java/com/reactnativekeyboardcontroller/listeners/WindowDimensionListener.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class WindowDimensionListener(
1717
private val context: ThemedReactContext?,
1818
) {
1919
private var lastDispatchedDimensions = Dimensions(0.0, 0.0)
20-
private var layoutListener : ViewTreeObserver.OnGlobalLayoutListener? = null
20+
private var layoutListener: ViewTreeObserver.OnGlobalLayoutListener? = null
2121

2222
public fun attachListener() {
2323
// attach to content view only once per app instance
@@ -28,9 +28,10 @@ class WindowDimensionListener(
2828

2929
updateWindowDimensions(content)
3030

31-
layoutListener = ViewTreeObserver.OnGlobalLayoutListener {
32-
updateWindowDimensions(content)
33-
}
31+
layoutListener =
32+
ViewTreeObserver.OnGlobalLayoutListener {
33+
updateWindowDimensions(content)
34+
}
3435

3536
content?.viewTreeObserver?.addOnGlobalLayoutListener(layoutListener)
3637
}

android/src/paper/java/com/reactnativekeyboardcontroller/KeyboardControllerViewManager.kt

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,43 @@ import com.facebook.react.uimanager.ThemedReactContext
55
import com.facebook.react.uimanager.annotations.ReactProp
66
import com.facebook.react.views.view.ReactViewGroup
77
import com.facebook.react.views.view.ReactViewManager
8+
import com.reactnativekeyboardcontroller.listeners.WindowDimensionListener
89
import com.reactnativekeyboardcontroller.managers.KeyboardControllerViewManagerImpl
910
import com.reactnativekeyboardcontroller.views.EdgeToEdgeReactViewGroup
1011

1112
class KeyboardControllerViewManager(
1213
mReactContext: ReactApplicationContext,
1314
) : ReactViewManager() {
1415
private val manager = KeyboardControllerViewManagerImpl(mReactContext)
16+
private var listener: WindowDimensionListener? = null
1517

16-
override fun getName(): String = KeyboardControllerViewManagerImpl.NAME
18+
// region Lifecycle
19+
override fun createViewInstance(context: ThemedReactContext): ReactViewGroup {
20+
if (listener == null) {
21+
listener = WindowDimensionListener(context)
22+
listener?.attachListener()
23+
}
24+
return manager.createViewInstance(context)
25+
}
1726

18-
override fun createViewInstance(reactContext: ThemedReactContext): EdgeToEdgeReactViewGroup =
19-
manager.createViewInstance(reactContext)
27+
override fun invalidate() {
28+
super.invalidate()
29+
listener?.detachListener()
30+
}
2031

2132
override fun onAfterUpdateTransaction(view: ReactViewGroup) {
2233
super.onAfterUpdateTransaction(view)
2334
manager.setEdgeToEdge(view as EdgeToEdgeReactViewGroup)
2435
}
2536

37+
override fun onDropViewInstance(view: ReactViewGroup) {
38+
super.onDropViewInstance(view)
39+
(view as EdgeToEdgeReactViewGroup).setActive(false)
40+
view.removeWindowInsetsListener()
41+
}
42+
// endregion
43+
44+
// region Props setters
2645
@ReactProp(name = "enabled")
2746
fun setEnabled(
2847
view: EdgeToEdgeReactViewGroup,
@@ -54,7 +73,12 @@ class KeyboardControllerViewManager(
5473
) {
5574
manager.setPreserveEdgeToEdge(view, isPreservingEdgeToEdge)
5675
}
76+
// endregion
5777

78+
// region Constants
5879
override fun getExportedCustomDirectEventTypeConstants(): MutableMap<String, Any> =
5980
manager.getExportedCustomDirectEventTypeConstants()
81+
82+
override fun getName(): String = KeyboardControllerViewManagerImpl.NAME
83+
// endregion
6084
}

0 commit comments

Comments
 (0)