Let notifications use avatar fallback.
Extract code which handles Matrix image to its own api / impl / test modules.
This commit is contained in:
parent
4fa950b25e
commit
185d4fadde
42 changed files with 410 additions and 194 deletions
22
libraries/matrixmedia/test/build.gradle.kts
Normal file
22
libraries/matrixmedia/test/build.gradle.kts
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "io.element.android.libraries.matrix.ui.media.test"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(projects.libraries.matrix.api)
|
||||
implementation(projects.libraries.matrixmedia.api)
|
||||
implementation(projects.libraries.designsystem)
|
||||
implementation(projects.tests.testutils)
|
||||
implementation(libs.coil.compose)
|
||||
}
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.ui.test.media
|
||||
|
||||
import coil3.ComponentRegistry
|
||||
import coil3.ImageLoader
|
||||
import coil3.disk.DiskCache
|
||||
import coil3.memory.MemoryCache
|
||||
import coil3.request.Disposable
|
||||
import coil3.request.ImageRequest
|
||||
import coil3.request.ImageResult
|
||||
|
||||
class FakeImageLoader : ImageLoader {
|
||||
private val executedRequests = mutableListOf<ImageRequest>()
|
||||
|
||||
override val defaults: ImageRequest.Defaults
|
||||
get() = error("Not implemented")
|
||||
override val components: ComponentRegistry
|
||||
get() = error("Not implemented")
|
||||
override val memoryCache: MemoryCache?
|
||||
get() = error("Not implemented")
|
||||
override val diskCache: DiskCache?
|
||||
get() = error("Not implemented")
|
||||
|
||||
override fun enqueue(request: ImageRequest): Disposable {
|
||||
error("Not implemented")
|
||||
}
|
||||
|
||||
override suspend fun execute(request: ImageRequest): ImageResult {
|
||||
executedRequests.add(request)
|
||||
error("Not implemented")
|
||||
}
|
||||
|
||||
override fun shutdown() {
|
||||
error("Not implemented")
|
||||
}
|
||||
|
||||
override fun newBuilder(): ImageLoader.Builder {
|
||||
error("Not implemented")
|
||||
}
|
||||
|
||||
fun getExecutedRequestsData(): List<Any> {
|
||||
return executedRequests.map { it.data }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.ui.test.media
|
||||
|
||||
import coil3.ImageLoader
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.matrix.ui.media.ImageLoaderHolder
|
||||
|
||||
class FakeImageLoaderHolder(
|
||||
val fakeImageLoader: ImageLoader = FakeImageLoader(),
|
||||
) : ImageLoaderHolder {
|
||||
override fun get(): ImageLoader {
|
||||
return fakeImageLoader
|
||||
}
|
||||
|
||||
override fun get(client: MatrixClient): ImageLoader {
|
||||
return fakeImageLoader
|
||||
}
|
||||
|
||||
override fun remove(sessionId: SessionId) {
|
||||
// No-op
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Copyright (c) 2025 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.ui.test.media
|
||||
|
||||
import coil3.Bitmap
|
||||
import io.element.android.libraries.designsystem.components.avatar.AvatarData
|
||||
import io.element.android.libraries.matrix.ui.media.InitialsAvatarBitmapGenerator
|
||||
import io.element.android.tests.testutils.lambda.lambdaError
|
||||
|
||||
class FakeInitialsAvatarBitmapGenerator(
|
||||
private val generateBitmapResult: (Int, AvatarData, Boolean, Float) -> Bitmap? = { _, _, _, _ -> lambdaError() }
|
||||
) : InitialsAvatarBitmapGenerator {
|
||||
override fun generateBitmap(
|
||||
size: Int,
|
||||
avatarData: AvatarData,
|
||||
useDarkTheme: Boolean,
|
||||
fontSizePercentage: Float,
|
||||
): Bitmap? {
|
||||
return generateBitmapResult(size, avatarData, useDarkTheme, fontSizePercentage)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue