Use OkHttp for Glide requests

This commit is contained in:
Kirill Kamakin
2022-04-18 13:38:19 +02:00
parent 2686f757ea
commit 1ffd2d2359
3 changed files with 52 additions and 0 deletions

View File

@@ -151,6 +151,8 @@ dependencies {
// https://github.com/bumptech/glide/releases
def glide_version = "4.13.1"
implementation "com.github.bumptech.glide:glide:$glide_version"
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
kapt "com.github.bumptech.glide:compiler:$glide_version"
// https://github.com/androidbroadcast/ViewBindingPropertyDelegate/releases
implementation "com.github.kirich1409:viewbindingpropertydelegate-noreflection:1.5.6"

View File

@@ -0,0 +1,18 @@
package gq.kirmanak.mealient.ui.images
import dagger.hilt.EntryPoint
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import gq.kirmanak.mealient.di.AUTH_OK_HTTP
import okhttp3.OkHttpClient
import javax.inject.Named
import javax.inject.Singleton
@EntryPoint
@InstallIn(SingletonComponent::class)
interface GlideModuleEntryPoint {
@Singleton
@Named(AUTH_OK_HTTP)
fun provideOkHttp(): OkHttpClient
}

View File

@@ -0,0 +1,32 @@
package gq.kirmanak.mealient.ui.images
import android.content.Context
import com.bumptech.glide.Glide
import com.bumptech.glide.Registry
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
import com.bumptech.glide.load.model.GlideUrl
import com.bumptech.glide.module.AppGlideModule
import dagger.hilt.android.EntryPointAccessors.fromApplication
import timber.log.Timber
import java.io.InputStream
@GlideModule
class MealieGlideModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
super.registerComponents(context, glide, registry)
replaceOkHttp(context, registry)
}
private fun replaceOkHttp(context: Context, registry: Registry) {
Timber.v("replaceOkHttp() called with: context = $context, registry = $registry")
val entryPoint = fromApplication(context, GlideModuleEntryPoint::class.java)
val okHttp = entryPoint.provideOkHttp()
registry.replace(
GlideUrl::class.java,
InputStream::class.java,
OkHttpUrlLoader.Factory(okHttp)
)
}
}