mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 05:31:21 +03:00
Retrofit: lazy init okhttp
This commit is contained in:
parent
93ef3edab3
commit
3af7ca9ab0
3 changed files with 14 additions and 5 deletions
|
@ -17,6 +17,7 @@
|
||||||
package im.vector.matrix.android.internal.auth
|
package im.vector.matrix.android.internal.auth
|
||||||
|
|
||||||
import android.util.Patterns
|
import android.util.Patterns
|
||||||
|
import dagger.Lazy
|
||||||
import im.vector.matrix.android.api.MatrixCallback
|
import im.vector.matrix.android.api.MatrixCallback
|
||||||
import im.vector.matrix.android.api.auth.Authenticator
|
import im.vector.matrix.android.api.auth.Authenticator
|
||||||
import im.vector.matrix.android.api.auth.data.Credentials
|
import im.vector.matrix.android.api.auth.data.Credentials
|
||||||
|
@ -42,7 +43,7 @@ import javax.inject.Inject
|
||||||
import javax.inject.Provider
|
import javax.inject.Provider
|
||||||
|
|
||||||
internal class DefaultAuthenticator @Inject constructor(@Unauthenticated
|
internal class DefaultAuthenticator @Inject constructor(@Unauthenticated
|
||||||
private val okHttpClient: Provider<OkHttpClient>,
|
private val okHttpClient: Lazy<OkHttpClient>,
|
||||||
private val retrofitFactory: RetrofitFactory,
|
private val retrofitFactory: RetrofitFactory,
|
||||||
private val coroutineDispatchers: MatrixCoroutineDispatchers,
|
private val coroutineDispatchers: MatrixCoroutineDispatchers,
|
||||||
private val sessionParamsStore: SessionParamsStore,
|
private val sessionParamsStore: SessionParamsStore,
|
||||||
|
@ -133,7 +134,7 @@ internal class DefaultAuthenticator @Inject constructor(@Unauthenticated
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildAuthAPI(homeServerConnectionConfig: HomeServerConnectionConfig): AuthAPI {
|
private fun buildAuthAPI(homeServerConnectionConfig: HomeServerConnectionConfig): AuthAPI {
|
||||||
val retrofit = retrofitFactory.create(okHttpClient.get(), homeServerConnectionConfig.homeServerUri.toString())
|
val retrofit = retrofitFactory.create(okHttpClient, homeServerConnectionConfig.homeServerUri.toString())
|
||||||
return retrofit.create(AuthAPI::class.java)
|
return retrofit.create(AuthAPI::class.java)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,17 +17,24 @@
|
||||||
package im.vector.matrix.android.internal.network
|
package im.vector.matrix.android.internal.network
|
||||||
|
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
|
import dagger.Lazy
|
||||||
|
import okhttp3.Call
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
|
import okhttp3.Request
|
||||||
import retrofit2.Retrofit
|
import retrofit2.Retrofit
|
||||||
import retrofit2.converter.moshi.MoshiConverterFactory
|
import retrofit2.converter.moshi.MoshiConverterFactory
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class RetrofitFactory @Inject constructor(private val moshi: Moshi) {
|
class RetrofitFactory @Inject constructor(private val moshi: Moshi) {
|
||||||
|
|
||||||
fun create(okHttpClient: OkHttpClient, baseUrl: String): Retrofit {
|
fun create(okHttpClient: Lazy<OkHttpClient>, baseUrl: String): Retrofit {
|
||||||
return Retrofit.Builder()
|
return Retrofit.Builder()
|
||||||
.baseUrl(baseUrl)
|
.baseUrl(baseUrl)
|
||||||
.client(okHttpClient)
|
.callFactory(object : Call.Factory {
|
||||||
|
override fun newCall(request: Request): Call {
|
||||||
|
return okHttpClient.get().newCall(request)
|
||||||
|
}
|
||||||
|
})
|
||||||
.addConverterFactory(UnitConverterFactory)
|
.addConverterFactory(UnitConverterFactory)
|
||||||
.addConverterFactory(MoshiConverterFactory.create(moshi))
|
.addConverterFactory(MoshiConverterFactory.create(moshi))
|
||||||
.build()
|
.build()
|
||||||
|
|
|
@ -19,6 +19,7 @@ package im.vector.matrix.android.internal.session
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import com.zhuinden.monarchy.Monarchy
|
import com.zhuinden.monarchy.Monarchy
|
||||||
import dagger.Binds
|
import dagger.Binds
|
||||||
|
import dagger.Lazy
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.Provides
|
import dagger.Provides
|
||||||
import dagger.multibindings.IntoSet
|
import dagger.multibindings.IntoSet
|
||||||
|
@ -132,7 +133,7 @@ internal abstract class SessionModule {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
@Provides
|
@Provides
|
||||||
@SessionScope
|
@SessionScope
|
||||||
fun providesRetrofit(@Authenticated okHttpClient: OkHttpClient,
|
fun providesRetrofit(@Authenticated okHttpClient: Lazy<OkHttpClient>,
|
||||||
sessionParams: SessionParams,
|
sessionParams: SessionParams,
|
||||||
retrofitFactory: RetrofitFactory): Retrofit {
|
retrofitFactory: RetrofitFactory): Retrofit {
|
||||||
return retrofitFactory
|
return retrofitFactory
|
||||||
|
|
Loading…
Reference in a new issue