<lambda>null1package host.exp.exponent.kernel 2 3 import expo.modules.manifests.core.Manifest 4 import host.exp.exponent.RNObject 5 import okhttp3.Interceptor 6 import okhttp3.Response 7 8 /** 9 * A singleton network interceptor proxy to forward okhttp requests to the versioned handlers. 10 */ 11 object KernelNetworkInterceptor { 12 private var sdkVersion: String = RNObject.UNVERSIONED 13 private var versionedAppInterceptorObject: RNObject? = null 14 private var versionedNetworkInterceptorObject: RNObject? = null 15 private var expoNetworkInterceptor: RNObject? = null 16 17 fun start(manifest: Manifest, reactInstanceManager: Any?) { 18 sdkVersion = manifest.getExpoGoSDKVersion() ?: throw IllegalArgumentException("Invalid SDK version") 19 val sdkMajorVersion = sdkVersion.split(".")[0].toIntOrNull() ?: Int.MAX_VALUE 20 if (sdkMajorVersion < 49) { 21 return 22 } 23 versionedAppInterceptorObject = RNObject("expo.modules.kotlin.devtools.ExpoNetworkInspectOkHttpAppInterceptor") 24 .loadVersion(sdkVersion) 25 .construct() 26 versionedNetworkInterceptorObject = RNObject("expo.modules.kotlin.devtools.ExpoNetworkInspectOkHttpNetworkInterceptor") 27 .loadVersion(sdkVersion) 28 .construct() 29 expoNetworkInterceptor = RNObject("host.exp.exponent.ExpoNetworkInterceptor") 30 .loadVersion(sdkVersion) 31 .construct() 32 expoNetworkInterceptor?.call("start", manifest, reactInstanceManager) 33 } 34 35 val okhttpAppInterceptorProxy = Interceptor { chain -> 36 versionedAppInterceptorObject?.callWithThrowable("intercept", chain) as? Response 37 ?: chain.proceed(chain.request()) 38 } 39 40 val okhttpNetworkInterceptorProxy = Interceptor { chain -> 41 versionedNetworkInterceptorObject?.callWithThrowable("intercept", chain) as? Response 42 ?: chain.proceed(chain.request()) 43 } 44 45 fun onResume(reactInstanceManager: Any?) { 46 expoNetworkInterceptor?.call("onResume", reactInstanceManager) 47 } 48 49 fun onPause() { 50 expoNetworkInterceptor?.call("onPause") 51 versionedNetworkInterceptorObject = null 52 versionedAppInterceptorObject = null 53 } 54 } 55