Inject Lazy and then use callFactory instead of setting client manually. It'll allow to initialise retrofit/okhttp lazily.
This commit is contained in:
parent
ba84f39ea1
commit
05d2090e67
1 changed files with 3 additions and 2 deletions
|
|
@ -17,6 +17,7 @@
|
||||||
package io.element.android.libraries.network
|
package io.element.android.libraries.network
|
||||||
|
|
||||||
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
|
||||||
|
import dagger.Lazy
|
||||||
import io.element.android.libraries.core.uri.ensureTrailingSlash
|
import io.element.android.libraries.core.uri.ensureTrailingSlash
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.MediaType.Companion.toMediaType
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
|
|
@ -25,14 +26,14 @@ import retrofit2.Retrofit
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RetrofitFactory @Inject constructor(
|
class RetrofitFactory @Inject constructor(
|
||||||
private val okHttpClient: OkHttpClient,
|
private val okHttpClient: Lazy<OkHttpClient>,
|
||||||
) {
|
) {
|
||||||
fun create(baseUrl: String): Retrofit {
|
fun create(baseUrl: String): Retrofit {
|
||||||
val contentType = "application/json".toMediaType()
|
val contentType = "application/json".toMediaType()
|
||||||
return Retrofit.Builder()
|
return Retrofit.Builder()
|
||||||
.baseUrl(baseUrl.ensureTrailingSlash())
|
.baseUrl(baseUrl.ensureTrailingSlash())
|
||||||
.addConverterFactory(Json.asConverterFactory(contentType))
|
.addConverterFactory(Json.asConverterFactory(contentType))
|
||||||
.client(okHttpClient)
|
.callFactory { request -> okHttpClient.get().newCall(request) }
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue