diff --git a/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt b/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt index 0a913fac5..b8aa30fff 100644 --- a/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt +++ b/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/network/NetworkingModuleReflected.kt @@ -3,6 +3,7 @@ package com.wix.detox.reactnative.idlingresources.network import android.util.Log import com.facebook.react.bridge.ReactContext import com.facebook.react.modules.network.NetworkingModule +import com.wix.detox.reactnative.ReactNativeInfo import okhttp3.OkHttpClient import org.joor.Reflect import org.joor.ReflectException @@ -10,13 +11,20 @@ import org.joor.ReflectException private const val LOG_TAG = "RNNetworkingModuleRefl" -private const val FIELD_OKHTTP_CLIENT = "mClient" +private const val FIELD_OKHTTP_CLIENT_PRE80 = "mClient" +private const val FIELD_OKHTTP_CLIENT = "client" internal class NetworkingModuleReflected(private val reactContext: ReactContext) { fun getHttpClient(): OkHttpClient? { val networkNativeModule = reactContext.getNativeModule(NetworkingModule::class.java) try { - return Reflect.on(networkNativeModule).field(FIELD_OKHTTP_CLIENT).get() + val fieldName = if (ReactNativeInfo.rnVersion().minor > 79) { + FIELD_OKHTTP_CLIENT + } else { + FIELD_OKHTTP_CLIENT_PRE80 + } + + return Reflect.on(networkNativeModule).field(fieldName).get() } catch (e: ReflectException) { Log.e(LOG_TAG, "Can't set up Networking Module listener", e) return null diff --git a/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt b/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt index 6d738b99d..a350ab044 100644 --- a/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt +++ b/detox/android/detox/src/full/java/com/wix/detox/reactnative/idlingresources/timers/JavaTimersReflected.kt @@ -2,6 +2,7 @@ package com.wix.detox.reactnative.idlingresources.timers import com.facebook.react.bridge.ReactContext import com.facebook.react.modules.core.JavaTimerManager +import com.wix.detox.reactnative.ReactNativeInfo import org.joor.Reflect import kotlin.reflect.full.declaredFunctions import kotlin.reflect.jvm.isAccessible @@ -19,8 +20,26 @@ object JavaTimersReflected { } private fun getTimersManager(reactContext: ReactContext): JavaTimerManager { - val reactHost = Reflect.on(reactContext).field("mReactHost").get() - val reactInstance = Reflect.on(reactHost).field("mReactInstance").get() - return Reflect.on(reactInstance).field("mJavaTimerManager").get() as JavaTimerManager + val reactHostFieldName = if (ReactNativeInfo.rnVersion().minor > 79) { + "reactHost" + } else { + "mReactHost" + } + + val reactInstanceFieldName = if (ReactNativeInfo.rnVersion().minor > 80) { + "reactInstance" + } else { + "mReactInstance" + } + + val javaTimerManagerFieldName = if (ReactNativeInfo.rnVersion().minor > 79) { + "javaTimerManager" + } else { + "mJavaTimerManager" + } + + val reactHost = Reflect.on(reactContext).field(reactHostFieldName).get() + val reactInstance = Reflect.on(reactHost).field(reactInstanceFieldName).get() + return Reflect.on(reactInstance).field(javaTimerManagerFieldName).get() as JavaTimerManager } }