From 90ed7a2c9693065b4f341d4cf380971b9d0d1867 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20M=C4=99drek?= Date: Tue, 19 Dec 2023 23:04:10 +0100 Subject: [PATCH] fix(#439): remove deprecated FabricViewStateManager class usage FabricStateViewManager is deprecated in RN core and it should be migrated just to direct usage of StateWrapper (it should be safe to use it even with older versions of RN) --- .../safeareacontext/SafeAreaContextPackage.kt | 1 + .../th3rdwave/safeareacontext/SafeAreaView.kt | 27 ++++++++++--------- .../safeareacontext/SafeAreaViewEdges.kt | 2 -- .../safeareacontext/SafeAreaViewLocalData.kt | 2 -- .../safeareacontext/SafeAreaViewManager.kt | 3 +-- 5 files changed, 16 insertions(+), 19 deletions(-) diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt index 0265d787..60637308 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaContextPackage.kt @@ -30,6 +30,7 @@ class SafeAreaContextPackage : TurboReactPackage() { moduleClass.name, true, reactModule.needsEagerInit, + /** TODO remove the parameter once support for RN < 0.73 is dropped */ reactModule.hasConstants, reactModule.isCxxModule, TurboModule::class.java.isAssignableFrom(moduleClass)) diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt index ca5646c2..b29e787a 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaView.kt @@ -5,26 +5,28 @@ 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.uimanager.StateWrapper import com.facebook.react.uimanager.UIManagerModule import com.facebook.react.views.view.ReactViewGroup -import java.util.* 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: SafeAreaViewEdges? = null private var mProviderView: View? = null - private val mFabricViewStateManager = FabricViewStateManager() + private var mStateWrapper: StateWrapper? = null - override fun getFabricViewStateManager(): FabricViewStateManager { - return mFabricViewStateManager + fun getStateWrapper(): StateWrapper? { + return mStateWrapper + } + + fun setStateWrapper(stateWrapper: StateWrapper?) { + mStateWrapper = stateWrapper } private fun updateInsets() { @@ -37,12 +39,11 @@ class SafeAreaView(context: Context?) : SafeAreaViewEdgeModes.ADDITIVE, SafeAreaViewEdgeModes.ADDITIVE, SafeAreaViewEdgeModes.ADDITIVE) - if (mFabricViewStateManager.hasStateWrapper()) { - mFabricViewStateManager.setState { - val map = Arguments.createMap() - map.putMap("insets", edgeInsetsToJsMap(insets)) - map - } + val stateWrapper = getStateWrapper() + if (stateWrapper != null) { + val map = Arguments.createMap() + map.putMap("insets", edgeInsetsToJsMap(insets)) + stateWrapper.updateState(map) } else { val localData = SafeAreaViewLocalData(insets = insets, mode = mMode, edges = edges) val reactContext = getReactContext(this) diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt index 24492c5d..d7b64bff 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewEdges.kt @@ -1,7 +1,5 @@ package com.th3rdwave.safeareacontext -import java.util.* - enum class SafeAreaViewEdgeModes { OFF, ADDITIVE, diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt index afbbcdfd..93d543e8 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewLocalData.kt @@ -1,7 +1,5 @@ package com.th3rdwave.safeareacontext -import java.util.* - data class SafeAreaViewLocalData( val insets: EdgeInsets, val mode: SafeAreaViewMode, diff --git a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt index 114e8926..e45f2101 100644 --- a/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt +++ b/android/src/main/java/com/th3rdwave/safeareacontext/SafeAreaViewManager.kt @@ -10,7 +10,6 @@ import com.facebook.react.uimanager.annotations.ReactProp import com.facebook.react.viewmanagers.RNCSafeAreaViewManagerInterface import com.facebook.react.views.view.ReactViewGroup import com.facebook.react.views.view.ReactViewManager -import java.util.* @ReactModule(name = SafeAreaViewManager.REACT_CLASS) class SafeAreaViewManager : ReactViewManager(), RNCSafeAreaViewManagerInterface { @@ -64,7 +63,7 @@ class SafeAreaViewManager : ReactViewManager(), RNCSafeAreaViewManagerInterface< props: ReactStylesDiffMap?, stateWrapper: StateWrapper? ): Any? { - (view as SafeAreaView).fabricViewStateManager.setStateWrapper(stateWrapper) + (view as SafeAreaView).setStateWrapper(stateWrapper) return null }