From ef2c646f9cd7aa9ea6b5a84796c1905985a3be4d Mon Sep 17 00:00:00 2001 From: Wojciech Lewicki Date: Wed, 21 Feb 2024 18:22:10 +0100 Subject: [PATCH 1/2] fix: use reactApplicationContext --- .../main/java/com/swmansion/rnscreens/ScreenContainer.kt | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt index 7fa727671c..d32d5dd1d9 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt @@ -14,6 +14,7 @@ import com.facebook.react.ReactRootView import com.facebook.react.bridge.ReactContext import com.facebook.react.modules.core.ChoreographerCompat import com.facebook.react.modules.core.ReactChoreographer +import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.UIManagerHelper import com.swmansion.rnscreens.Screen.ActivityState import com.swmansion.rnscreens.events.ScreenDismissedEvent @@ -318,14 +319,10 @@ open class ScreenContainer(context: Context?) : ViewGroup(context) { // The exception to this rule is `updateImmediately` which is triggered by actions // not connected to React view hierarchy changes, but rather internal events needsUpdate = true - (context.applicationContext as? ReactContext)?.runOnUiQueueThread { - // We schedule the update here because LayoutAnimations of `react-native-reanimated` - // sometimes attach/detach screens after the layout block of `ScreensShadowNode` has - // already run, and we want to update the container then too. In the other cases, - // this code will do nothing since it will run after the UIBlock when `mNeedUpdate` - // will already be false. + (context as ThemedReactContext).reactApplicationContext.runOnUiQueueThread { performUpdates() } + } protected fun performUpdatesNow() { From 1cdd5acf3ef3c19900f8de89dd3cc86e380aa5bc Mon Sep 17 00:00:00 2001 From: Wojciech Lewicki Date: Wed, 21 Feb 2024 18:24:14 +0100 Subject: [PATCH 2/2] fix: restore comment --- .../src/main/java/com/swmansion/rnscreens/ScreenContainer.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt index d32d5dd1d9..b6891248b4 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt @@ -320,6 +320,11 @@ open class ScreenContainer(context: Context?) : ViewGroup(context) { // not connected to React view hierarchy changes, but rather internal events needsUpdate = true (context as ThemedReactContext).reactApplicationContext.runOnUiQueueThread { + // We schedule the update here because LayoutAnimations of `react-native-reanimated` + // sometimes attach/detach screens after the layout block of `ScreensShadowNode` has + // already run, and we want to update the container then too. In the other cases, + // this code will do nothing since it will run after the UIBlock when `mNeedUpdate` + // will already be false. performUpdates() }