From 8b1ca62f78694e0b095d67f623b29b6fc4a80f9c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 24 Jun 2024 14:22:46 +0200 Subject: [PATCH] Convert LoggedInImageLoaderFactory to an interface and add DefaultLoggedInImageLoaderFactory --- .../matrix/ui/media/ImageLoaderFactories.kt | 16 +++++++++++----- .../matrix/ui/media/ImageLoaderHolder.kt | 14 +++----------- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt index 4c5309e2bd..95b23f54a1 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt @@ -22,18 +22,24 @@ import coil.ImageLoader import coil.ImageLoaderFactory import coil.decode.GifDecoder import coil.decode.ImageDecoderDecoder +import com.squareup.anvil.annotations.ContributesBinding +import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.matrix.api.MatrixClient import okhttp3.OkHttpClient import javax.inject.Inject import javax.inject.Provider -class LoggedInImageLoaderFactory( - private val context: Context, - private val matrixClient: MatrixClient, +interface LoggedInImageLoaderFactory { + fun newImageLoader(matrixClient: MatrixClient): ImageLoader +} + +@ContributesBinding(AppScope::class) +class DefaultLoggedInImageLoaderFactory @Inject constructor( + @ApplicationContext private val context: Context, private val okHttpClient: Provider, -) : ImageLoaderFactory { - override fun newImageLoader(): ImageLoader { +) : LoggedInImageLoaderFactory { + override fun newImageLoader(matrixClient: MatrixClient): ImageLoader { return ImageLoader .Builder(context) .okHttpClient { okHttpClient.get() } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt index ae60a44a2e..10f81f254d 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderHolder.kt @@ -16,19 +16,15 @@ package io.element.android.libraries.matrix.ui.media -import android.content.Context import coil.ImageLoader import com.squareup.anvil.annotations.ContributesBinding import io.element.android.libraries.di.AppScope -import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.SingleIn import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.SessionId import io.element.android.libraries.sessionstorage.api.observer.SessionListener import io.element.android.libraries.sessionstorage.api.observer.SessionObserver -import okhttp3.OkHttpClient import javax.inject.Inject -import javax.inject.Provider interface ImageLoaderHolder { fun get(client: MatrixClient): ImageLoader @@ -38,8 +34,7 @@ interface ImageLoaderHolder { @ContributesBinding(AppScope::class) @SingleIn(AppScope::class) class DefaultImageLoaderHolder @Inject constructor( - @ApplicationContext private val context: Context, - private val okHttpClient: Provider, + private val loggedInImageLoaderFactory: LoggedInImageLoaderFactory, private val sessionObserver: SessionObserver, ) : ImageLoaderHolder { private val map = mutableMapOf() @@ -61,11 +56,8 @@ class DefaultImageLoaderHolder @Inject constructor( override fun get(client: MatrixClient): ImageLoader { return synchronized(map) { map.getOrPut(client.sessionId) { - LoggedInImageLoaderFactory( - context = context, - matrixClient = client, - okHttpClient = okHttpClient, - ).newImageLoader() + loggedInImageLoaderFactory + .newImageLoader(client) } } }