Browse Source

Enable gif support for Coil

feature/fga/small_timeline_improvements
Jorge Martín 1 year ago
parent
commit
c749788677
  1. 1
      gradle/libs.versions.toml
  2. 1
      libraries/matrixui/build.gradle.kts
  3. 9
      libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt

1
gradle/libs.versions.toml

@ -127,6 +127,7 @@ test_appyx_junit = { module = "com.bumble.appyx:testing-junit4", version.ref = "
# Others # Others
coil = { module = "io.coil-kt:coil", version.ref = "coil" } coil = { module = "io.coil-kt:coil", version.ref = "coil" }
coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" } coil_compose = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
coil_gif = { module = "io.coil-kt:coil-gif", version.ref = "coil" }
datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" } datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "datetime" }
serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization_json" } serialization_json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "serialization_json" }
showkase = { module = "com.airbnb.android:showkase", version.ref = "showkase" } showkase = { module = "com.airbnb.android:showkase", version.ref = "showkase" }

1
libraries/matrixui/build.gradle.kts

@ -39,6 +39,7 @@ dependencies {
implementation(projects.libraries.core) implementation(projects.libraries.core)
implementation(projects.libraries.uiStrings) implementation(projects.libraries.uiStrings)
implementation(libs.coil.compose) implementation(libs.coil.compose)
implementation(libs.coil.gif)
ksp(libs.showkase.processor) ksp(libs.showkase.processor)
} }

9
libraries/matrixui/src/main/kotlin/io/element/android/libraries/matrix/ui/media/ImageLoaderFactories.kt

@ -17,8 +17,11 @@
package io.element.android.libraries.matrix.ui.media package io.element.android.libraries.matrix.ui.media
import android.content.Context import android.content.Context
import android.os.Build
import coil.ImageLoader import coil.ImageLoader
import coil.ImageLoaderFactory import coil.ImageLoaderFactory
import coil.decode.GifDecoder
import coil.decode.ImageDecoderDecoder
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
@ -34,6 +37,12 @@ class LoggedInImageLoaderFactory @Inject constructor(
.Builder(context) .Builder(context)
.okHttpClient(okHttpClient) .okHttpClient(okHttpClient)
.components { .components {
// Add gif support
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
add(ImageDecoderDecoder.Factory())
} else {
add(GifDecoder.Factory())
}
add(AvatarDataKeyer()) add(AvatarDataKeyer())
add(MediaRequestDataKeyer()) add(MediaRequestDataKeyer())
add(CoilMediaFetcher.AvatarFactory(matrixClient)) add(CoilMediaFetcher.AvatarFactory(matrixClient))

Loading…
Cancel
Save