From cabeb19ae132b90c7df10e217fbb3b28170e99b2 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 2 Oct 2025 11:53:39 +0200 Subject: [PATCH] Naming convention and use MatrixMediaLoader instead of MatrixClient for Coil factories. --- .../android/libraries/matrix/api/MatrixClient.kt | 2 +- .../android/libraries/matrix/impl/RustMatrixClient.kt | 2 +- .../libraries/matrix/impl/di/SessionMatrixModule.kt | 2 +- .../android/libraries/matrix/test/FakeMatrixClient.kt | 2 +- .../matrix/ui/media/AvatarDataFetcherFactory.kt | 6 +++--- .../libraries/matrix/ui/media/ImageLoaderFactories.kt | 10 +++++----- .../libraries/matrix/ui/media/ImageLoaderHolder.kt | 2 +- .../matrix/ui/media/MediaRequestDataFetcherFactory.kt | 6 +++--- .../matrix/ui/media/DefaultImageLoaderHolderTest.kt | 10 +++++----- .../matrix/ui/media/FakeLoggedInImageLoaderFactory.kt | 8 ++++---- .../push/impl/notifications/NotificationMediaRepo.kt | 2 +- 11 files changed, 26 insertions(+), 26 deletions(-) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index 8323add7d3..5f116612b1 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -57,7 +57,7 @@ interface MatrixClient { val encryptionService: EncryptionService val roomDirectoryService: RoomDirectoryService val mediaPreviewService: MediaPreviewService - val mediaLoader: MatrixMediaLoader + val matrixMediaLoader: MatrixMediaLoader val sessionCoroutineScope: CoroutineScope val ignoredUsersFlow: StateFlow> val roomMembershipObserver: RoomMembershipObserver diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 619ab95537..33fe0e5056 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -213,7 +213,7 @@ class RustMatrixClient( featureFlagService = featureFlagService, ) - override val mediaLoader: MatrixMediaLoader = RustMediaLoader( + override val matrixMediaLoader: MatrixMediaLoader = RustMediaLoader( baseCacheDirectory = baseCacheDirectory, dispatchers = dispatchers, innerClient = innerClient, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt index 178eef4d28..37cf406f5f 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/di/SessionMatrixModule.kt @@ -66,7 +66,7 @@ object SessionMatrixModule { @Provides fun providesMatrixMediaLoader(matrixClient: MatrixClient): MatrixMediaLoader { - return matrixClient.mediaLoader + return matrixClient.matrixMediaLoader } @SessionCoroutineScope diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index 4443591eaa..431a5242f9 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -63,7 +63,7 @@ class FakeMatrixClient( private val userAvatarUrl: String? = AN_AVATAR_URL, override val roomListService: RoomListService = FakeRoomListService(), override val spaceService: SpaceService = FakeSpaceService(), - override val mediaLoader: MatrixMediaLoader = FakeMatrixMediaLoader(), + override val matrixMediaLoader: MatrixMediaLoader = FakeMatrixMediaLoader(), override val sessionVerificationService: FakeSessionVerificationService = FakeSessionVerificationService(), override val pushersService: FakePushersService = FakePushersService(), override val notificationService: FakeNotificationService = FakeNotificationService(), diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataFetcherFactory.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataFetcherFactory.kt index e176c4c03b..c852be62f5 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataFetcherFactory.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/AvatarDataFetcherFactory.kt @@ -11,10 +11,10 @@ import coil3.ImageLoader import coil3.fetch.Fetcher import coil3.request.Options import io.element.android.libraries.designsystem.components.avatar.AvatarData -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.media.MatrixMediaLoader internal class AvatarDataFetcherFactory( - private val client: MatrixClient + private val matrixMediaLoader: MatrixMediaLoader ) : Fetcher.Factory { override fun create( data: AvatarData, @@ -22,7 +22,7 @@ internal class AvatarDataFetcherFactory( imageLoader: ImageLoader ): Fetcher { return CoilMediaFetcher( - mediaLoader = client.mediaLoader, + mediaLoader = matrixMediaLoader, mediaData = data.toMediaRequestData(), ) } 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 dc36eb3878..54a1a21e22 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 @@ -18,11 +18,11 @@ import dev.zacsweers.metro.ContributesBinding import dev.zacsweers.metro.Inject import dev.zacsweers.metro.Provider import io.element.android.libraries.di.annotations.ApplicationContext -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.media.MatrixMediaLoader import okhttp3.OkHttpClient interface LoggedInImageLoaderFactory { - fun newImageLoader(matrixClient: MatrixClient): ImageLoader + fun newImageLoader(matrixMediaLoader: MatrixMediaLoader): ImageLoader } @ContributesBinding(AppScope::class) @@ -31,7 +31,7 @@ class DefaultLoggedInImageLoaderFactory( @ApplicationContext private val context: Context, private val okHttpClient: Provider, ) : LoggedInImageLoaderFactory { - override fun newImageLoader(matrixClient: MatrixClient): ImageLoader { + override fun newImageLoader(matrixMediaLoader: MatrixMediaLoader): ImageLoader { return ImageLoader.Builder(context) .components { add( @@ -50,8 +50,8 @@ class DefaultLoggedInImageLoaderFactory( } add(AvatarDataKeyer()) add(MediaRequestDataKeyer()) - add(AvatarDataFetcherFactory(matrixClient)) - add(MediaRequestDataFetcherFactory(matrixClient)) + add(AvatarDataFetcherFactory(matrixMediaLoader)) + add(MediaRequestDataFetcherFactory(matrixMediaLoader)) } .build() } 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 82080c66cc..6720eaae0f 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 @@ -49,7 +49,7 @@ class DefaultImageLoaderHolder( return synchronized(map) { map.getOrPut(client.sessionId) { loggedInImageLoaderFactory - .newImageLoader(client) + .newImageLoader(client.matrixMediaLoader) } } } diff --git a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataFetcherFactory.kt b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataFetcherFactory.kt index 2ac2ebe511..bc6cb7663c 100644 --- a/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataFetcherFactory.kt +++ b/libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/MediaRequestDataFetcherFactory.kt @@ -10,10 +10,10 @@ package io.element.android.libraries.matrix.ui.media import coil3.ImageLoader import coil3.fetch.Fetcher import coil3.request.Options -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.media.MatrixMediaLoader internal class MediaRequestDataFetcherFactory( - private val client: MatrixClient + private val matrixMediaLoader: MatrixMediaLoader, ) : Fetcher.Factory { override fun create( data: MediaRequestData, @@ -21,7 +21,7 @@ internal class MediaRequestDataFetcherFactory( imageLoader: ImageLoader ): Fetcher { return CoilMediaFetcher( - mediaLoader = client.mediaLoader, + mediaLoader = matrixMediaLoader, mediaData = data, ) } diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/DefaultImageLoaderHolderTest.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/DefaultImageLoaderHolderTest.kt index 5b3bc33d9f..a30305176b 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/DefaultImageLoaderHolderTest.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/DefaultImageLoaderHolderTest.kt @@ -10,7 +10,7 @@ package io.element.android.libraries.matrix.ui.media import androidx.test.platform.app.InstrumentationRegistry import coil3.ImageLoader import com.google.common.truth.Truth.assertThat -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.media.MatrixMediaLoader import io.element.android.libraries.matrix.test.A_SESSION_ID import io.element.android.libraries.matrix.test.FakeMatrixClient import io.element.android.libraries.sessionstorage.test.observer.FakeSessionObserver @@ -27,7 +27,7 @@ class DefaultImageLoaderHolderTest { @Test fun `get - returns the same ImageLoader for the same client`() { val context = InstrumentationRegistry.getInstrumentation().context - val lambda = lambdaRecorder { ImageLoader.Builder(context).build() } + val lambda = lambdaRecorder { ImageLoader.Builder(context).build() } val holder = DefaultImageLoaderHolder( loggedInImageLoaderFactory = FakeLoggedInImageLoaderFactory(lambda), @@ -39,14 +39,14 @@ class DefaultImageLoaderHolderTest { assert(imageLoader1 === imageLoader2) lambda.assertions() .isCalledOnce() - .with(value(client)) + .with(value(client.matrixMediaLoader)) } @Test fun `when session is deleted, the image loader is deleted`() = runTest { val context = InstrumentationRegistry.getInstrumentation().context val lambda = - lambdaRecorder { ImageLoader.Builder(context).build() } + lambdaRecorder { ImageLoader.Builder(context).build() } val sessionObserver = FakeSessionObserver() val holder = DefaultImageLoaderHolder( loggedInImageLoaderFactory = FakeLoggedInImageLoaderFactory(lambda), @@ -65,7 +65,7 @@ class DefaultImageLoaderHolderTest { fun `when session is created, nothing happen`() = runTest { val context = InstrumentationRegistry.getInstrumentation().context val lambda = - lambdaRecorder { ImageLoader.Builder(context).build() } + lambdaRecorder { ImageLoader.Builder(context).build() } val sessionObserver = FakeSessionObserver() DefaultImageLoaderHolder( loggedInImageLoaderFactory = FakeLoggedInImageLoaderFactory(lambda), diff --git a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/FakeLoggedInImageLoaderFactory.kt b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/FakeLoggedInImageLoaderFactory.kt index a4f5bbdfb7..56ee9ee653 100644 --- a/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/FakeLoggedInImageLoaderFactory.kt +++ b/libraries/matrixui/src/test/kotlin/io/element/android/libraries/matrix/ui/media/FakeLoggedInImageLoaderFactory.kt @@ -8,12 +8,12 @@ package io.element.android.libraries.matrix.ui.media import coil3.ImageLoader -import io.element.android.libraries.matrix.api.MatrixClient +import io.element.android.libraries.matrix.api.media.MatrixMediaLoader class FakeLoggedInImageLoaderFactory( - private val newImageLoaderLambda: (MatrixClient) -> ImageLoader + private val newImageLoaderLambda: (MatrixMediaLoader) -> ImageLoader ) : LoggedInImageLoaderFactory { - override fun newImageLoader(matrixClient: MatrixClient): ImageLoader { - return newImageLoaderLambda(matrixClient) + override fun newImageLoader(matrixMediaLoader: MatrixMediaLoader): ImageLoader { + return newImageLoaderLambda(matrixMediaLoader) } } diff --git a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt index 0794efe6fb..2bbc7208be 100644 --- a/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt +++ b/libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotificationMediaRepo.kt @@ -72,7 +72,7 @@ class DefaultNotificationMediaRepo( ): DefaultNotificationMediaRepo } - private val matrixMediaLoader = client.mediaLoader + private val matrixMediaLoader = client.matrixMediaLoader override suspend fun getMediaFile( mediaSource: MediaSource,