Use SdkExtensions for HttpEngine

This commit is contained in:
Mygod
2023-06-12 22:24:57 -04:00
parent 82b2fd4e93
commit 5766919216

View File

@@ -9,12 +9,14 @@ import android.net.http.ConnectionMigrationOptions
import android.net.http.HttpEngine import android.net.http.HttpEngine
import android.os.Build import android.os.Build
import android.os.RemoteException import android.os.RemoteException
import android.os.ext.SdkExtensions
import android.text.* import android.text.*
import android.view.MenuItem import android.view.MenuItem
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import androidx.annotation.DrawableRes import androidx.annotation.DrawableRes
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.annotation.RequiresExtension
import androidx.core.net.toUri import androidx.core.net.toUri
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.databinding.BindingAdapter import androidx.databinding.BindingAdapter
@@ -250,8 +252,8 @@ fun globalNetworkRequestBuilder() = NetworkRequest.Builder().apply {
if (Build.VERSION.SDK_INT >= 31) setIncludeOtherUidNetworks(true) if (Build.VERSION.SDK_INT >= 31) setIncludeOtherUidNetworks(true)
} }
@get:RequiresApi(34) @get:RequiresExtension(Build.VERSION_CODES.S, 7)
private val engine by lazy @TargetApi(34) { private val engine by lazy @RequiresExtension(Build.VERSION_CODES.S, 7) {
val cache = File(app.deviceStorage.cacheDir, "httpEngine") val cache = File(app.deviceStorage.cacheDir, "httpEngine")
HttpEngine.Builder(app.deviceStorage).apply { HttpEngine.Builder(app.deviceStorage).apply {
if (cache.mkdirs() || cache.isDirectory) { if (cache.mkdirs() || cache.isDirectory) {
@@ -266,9 +268,10 @@ private val engine by lazy @TargetApi(34) {
}.build() }.build()
} }
suspend fun <T> connectCancellable(url: String, block: suspend (HttpURLConnection) -> T): T { suspend fun <T> connectCancellable(url: String, block: suspend (HttpURLConnection) -> T): T {
val conn = (if (Build.VERSION.SDK_INT < 34) @Suppress("BlockingMethodInNonBlockingContext") { val conn = (if (Build.VERSION.SDK_INT >= 34 || Build.VERSION.SDK_INT >= Build.VERSION_CODES.S &&
URL(url).openConnection() SdkExtensions.getExtensionVersion(Build.VERSION_CODES.S) >= 7) {
} else engine.openConnection(URL(url))) as HttpURLConnection engine.openConnection(URL(url))
} else @Suppress("BlockingMethodInNonBlockingContext") URL(url).openConnection()) as HttpURLConnection
return suspendCancellableCoroutine { cont -> return suspendCancellableCoroutine { cont ->
val job = GlobalScope.launch(Dispatchers.IO) { val job = GlobalScope.launch(Dispatchers.IO) {
try { try {