Files
bsky-social-app/patches/react-native-screens@4.24.0.patch
T

34 lines
1.6 KiB
Diff

diff --git a/android/src/main/java/com/swmansion/rnscreens/Screen.kt b/android/src/main/java/com/swmansion/rnscreens/Screen.kt
index c99ca362df5baee81fa48d1c9ef09b40a2c23f07..725c07aa0ed516f9dd09f81e522f2d3191d9b5d0 100644
--- a/android/src/main/java/com/swmansion/rnscreens/Screen.kt
+++ b/android/src/main/java/com/swmansion/rnscreens/Screen.kt
@@ -17,6 +17,7 @@ import androidx.annotation.RequiresApi
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.view.children
import androidx.fragment.app.Fragment
+import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import com.facebook.react.bridge.GuardedRunnable
import com.facebook.react.bridge.ReactContext
@@ -637,7 +638,7 @@ class Screen(
endTransitionRecursive(childView.toolbar)
}
- if (childView is ViewGroup) {
+ if (childView is ViewGroup && childView !is RecyclerView) {
endTransitionRecursive(childView)
}
}
@@ -666,7 +667,10 @@ class Screen(
startTransitionRecursive(child.toolbar)
}
- if (child is ViewGroup) {
+ // Transition a RecyclerView as one unit. Marking its recyclable children as
+ // transitioning keeps their parent set after removal, so RecyclerView crashes
+ // when it tries to recycle them during the screen transition.
+ if (child is ViewGroup && child !is RecyclerView) {
startTransitionRecursive(child)
}
}