Johannes Bester
07/07/2023, 9:35 AMval networkModule = module {
singleOf(::Gson)
singleOf(::provideBearerAuthProvider)
singleOf(::provideClient)
}
fun provideBearerAuthProvider(
settingsRepository: SettingsRepository
) = BearerAuthProvider(
realm = null,
loadTokens = {
val token = settingsRepository.getAuthToken()
if (token == null) {
BearerTokens(accessToken = "fake", refreshToken = "")
} else {
BearerTokens(accessToken = token, refreshToken = "")
}
},
refreshTokens = {
val token = settingsRepository.requireAuthToken()
token?.let {
BearerTokens(accessToken = it, refreshToken = "")
}
},
sendWithoutRequestCallback = { true } // This is making BearerAuthProvider by default providing the token
).also { bearerAuthProvider ->
settingsRepository.addOnClearListener(bearerAuthProvider::clearToken)
}
fun provideClient(
bearerAuthProvider: BearerAuthProvider,
) = HttpClient(OkHttp) { <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Error
install(Logging) {
logger = Logger.ANDROID
LogLevel.ALL
}
install(Auth) {
providers += bearerAuthProvider
}
install(ContentNegotiation) {
gson { serializeSpecialFloatingPointValues() }
}
}
Austin
07/10/2023, 12:42 AM