android: inject a 10 mB cache into network layer

This commit is contained in:
Harsh Shandilya 2022-02-14 17:39:39 +05:30
parent adbda57652
commit dd233d4b10
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80

View file

@ -1,15 +1,18 @@
package dev.msfjarvis.claw.android.injection
import android.content.Context
import android.util.Log
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import dagger.Lazy
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import dev.msfjarvis.claw.api.LobstersApi
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import okhttp3.Cache
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import retrofit2.Retrofit
@ -21,8 +24,14 @@ import retrofit2.create
object ApiModule {
@Provides
fun provideClient(): OkHttpClient {
fun provideCache(@ApplicationContext context: Context): Cache {
return Cache(context.cacheDir, 10 * 1024 * 1024)
}
@Provides
fun provideClient(cache: Lazy<Cache>): OkHttpClient {
return OkHttpClient.Builder()
.cache(cache.get())
.addNetworkInterceptor { chain ->
val request = chain.request()
Log.d("LobstersApi", "${request.method}: ${request.url}")