Closed ivanignatiev closed 9 months ago
It seems that deleted from RN0.73. ref: https://github.com/facebook/react-native/pull/38958
I added patch file with patch-package and passed build error, but I'm not sure that this is same behavior with previous working library. Can anybody check this change?
// react-native-safe-area-context+4.5.0.patch
diff --git a/node_modules/react-native-safe-area-context/android/build.gradle b/node_modules/react-native-safe-area-context/android/build.gradle
index bfdc938..985ea34 100644
--- a/node_modules/react-native-safe-area-context/android/build.gradle
+++ b/node_modules/react-native-safe-area-context/android/build.gradle
@@ -32,6 +32,7 @@ if (isNewArchitectureEnabled()) {
}
android {
+ namespace 'com.th3rdwave.safeareacontext'
compileSdkVersion getExtOrDefault('compileSdkVersion', 30)
// Used to override the NDK path/version on internal CI or by allowing
diff --git a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt
index 2d29dbd..6480fef 100644
--- a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt
+++ b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt
@@ -4,39 +4,41 @@ import android.content.Context
import android.util.Log
import android.view.View
import android.view.ViewTreeObserver
-import com.facebook.react.bridge.Arguments
-import com.facebook.react.uimanager.FabricViewStateManager
-import com.facebook.react.uimanager.FabricViewStateManager.HasFabricViewStateManager
+import com.facebook.react.bridge.WritableNativeMap
+import com.facebook.react.uimanager.StateWrapper
import com.facebook.react.uimanager.UIManagerModule
import com.facebook.react.views.view.ReactViewGroup
-import java.util.*
+import java.util.EnumSet
import java.util.concurrent.locks.ReentrantLock
import kotlin.concurrent.withLock
+
private const val MAX_WAIT_TIME_NANO = 500000000L // 500ms
class SafeAreaView(context: Context?) :
- ReactViewGroup(context), ViewTreeObserver.OnPreDrawListener, HasFabricViewStateManager {
+ ReactViewGroup(context), ViewTreeObserver.OnPreDrawListener {
private var mMode = SafeAreaViewMode.PADDING
private var mInsets: EdgeInsets? = null
private var mEdges: EnumSet<SafeAreaViewEdges>? = null
private var mProviderView: View? = null
- private val mFabricViewStateManager = FabricViewStateManager()
+ private var mStateWrapper: StateWrapper? = null
+
+ fun getStateWrapper(): StateWrapper? {
+ return mStateWrapper
+ }
- override fun getFabricViewStateManager(): FabricViewStateManager {
- return mFabricViewStateManager
+ fun setStateWrapper(stateWrapper: StateWrapper?) {
+ mStateWrapper = stateWrapper
}
private fun updateInsets() {
val insets = mInsets
if (insets != null) {
val edges = mEdges ?: EnumSet.allOf(SafeAreaViewEdges::class.java)
- if (mFabricViewStateManager.hasStateWrapper()) {
- mFabricViewStateManager.setState {
- val map = Arguments.createMap()
- map.putMap("insets", edgeInsetsToJsMap(insets))
- map
- }
+ if (mStateWrapper != null) {
+ val map = WritableNativeMap()
+ map.putMap("insets", edgeInsetsToJsMap(insets))
+ mStateWrapper?.updateState(map)
} else {
val localData = SafeAreaViewLocalData(insets = insets, mode = mMode, edges = edges)
val reactContext = getReactContext(this)
diff --git a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt
index cc62a62..d921779 100644
--- a/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt
+++ b/node_modules/react-native-safe-area-context/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt
@@ -67,7 +67,7 @@ class SafeAreaViewManager : ReactViewManager(), RNCSafeAreaViewManagerInterface<
props: ReactStylesDiffMap?,
stateWrapper: StateWrapper?
): Any? {
- (view as SafeAreaView).fabricViewStateManager.setStateWrapper(stateWrapper)
+ (view as SafeAreaView).setStateWrapper(stateWrapper)
return null
}
@lafest Thank you for patch! I have tested on my app and all screens are acting normally without any difference.
Geting Unresolved reference errors when building for Android.
New architecture is disabled. I have tried to add
export USE_FABRIC=1
but it has not changed anything.There is some breaking changes in RN 0.73 https://github.com/react-native-community/discussions-and-proposals/issues/671 but I have not found anything related to this issue.