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