diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f5622f1..da58f41 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -135,4 +135,6 @@ dependencies { implementation("com.google.guava:guava:31.0.1-android") implementation("androidx.concurrent:concurrent-futures:1.1.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.6.4") + + implementation("com.github.niusounds:cronet-engine:0.1.0") } diff --git a/app/src/main/java/app/revanced/manager/di/HttpModule.kt b/app/src/main/java/app/revanced/manager/di/HttpModule.kt index b883a4d..99f1910 100644 --- a/app/src/main/java/app/revanced/manager/di/HttpModule.kt +++ b/app/src/main/java/app/revanced/manager/di/HttpModule.kt @@ -1,29 +1,26 @@ package app.revanced.manager.di +import android.content.Context +import com.niusounds.ktor.client.engine.cronet.Cronet import io.ktor.client.* -import io.ktor.client.engine.okhttp.* import io.ktor.client.plugins.* +import io.ktor.client.plugins.cache.* import io.ktor.client.plugins.contentnegotiation.* import io.ktor.serialization.kotlinx.json.* import kotlinx.serialization.json.Json -import okhttp3.Dns -import org.koin.core.module.dsl.singleOf +import org.koin.android.ext.koin.androidContext import org.koin.dsl.module -import java.net.Inet4Address -import java.net.InetAddress val httpModule = module { - fun provideHttpClient() = HttpClient(OkHttp) { - engine { - config { - dns(object : Dns { - override fun lookup(hostname: String): List { - val addresses = Dns.SYSTEM.lookup(hostname) - return addresses.filterIsInstance() - } - }) + fun provideHttpClient(appContext: Context) = HttpClient( + engine = Cronet.create { + context = appContext + config = { + enableBrotli(true) + enableQuic(true) } } + ) { BrowserUserAgent() install(ContentNegotiation) { json(Json { @@ -32,7 +29,13 @@ val httpModule = module { ignoreUnknownKeys = true }) } + install(HttpRequestRetry) { + retryOnServerErrors(maxRetries = 5) + } + install(HttpCache) } - singleOf(::provideHttpClient) + single { + provideHttpClient(androidContext()) + } } \ No newline at end of file