diff --git a/app/build.gradle b/app/build.gradle index 437ef44..b7a1324 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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" diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/images/GlideModuleEntryPoint.kt b/app/src/main/java/gq/kirmanak/mealient/ui/images/GlideModuleEntryPoint.kt new file mode 100644 index 0000000..a842a35 --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/ui/images/GlideModuleEntryPoint.kt @@ -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 +} \ No newline at end of file diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/images/MealieGlideModule.kt b/app/src/main/java/gq/kirmanak/mealient/ui/images/MealieGlideModule.kt new file mode 100644 index 0000000..0a7d896 --- /dev/null +++ b/app/src/main/java/gq/kirmanak/mealient/ui/images/MealieGlideModule.kt @@ -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) + ) + } +}