Skip to content

Commit

Permalink
downgrade to coil 2
Browse files Browse the repository at this point in the history
  • Loading branch information
Tlaster committed May 15, 2024
1 parent 8d38391 commit 08a66b9
Show file tree
Hide file tree
Showing 13 changed files with 97 additions and 482 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ iosApp/iosApp.xcworkspace/*
iosApp/iosApp.xcodeproj/*
!iosApp/iosApp.xcodeproj/project.pbxproj
shared/shared.podspec
.kotlin
26 changes: 25 additions & 1 deletion app/src/main/java/dev/dimension/flare/App.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,41 @@
package dev.dimension.flare

import android.app.Application
import android.os.Build
import coil.ImageLoader
import coil.ImageLoaderFactory
import coil.decode.GifDecoder
import coil.decode.ImageDecoderDecoder
import coil.decode.SvgDecoder
import dev.dimension.flare.common.AnimatedPngDecoder
import dev.dimension.flare.common.AnimatedWebPDecoder
import dev.dimension.flare.di.androidModule
import dev.dimension.flare.di.appModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin

class App : Application() {
class App : Application(), ImageLoaderFactory {
override fun onCreate() {
super.onCreate()
startKoin {
androidContext(this@App)
modules(appModule() + androidModule)
}
}

override fun newImageLoader(): ImageLoader {
return ImageLoader.Builder(this)
.components {
if (Build.VERSION.SDK_INT >= 28) {
add(ImageDecoderDecoder.Factory())
} else {
add(GifDecoder.Factory())
}
add(AnimatedPngDecoder.Factory())
add(SvgDecoder.Factory())
add(AnimatedWebPDecoder.Factory())
}
.crossfade(true)
.build()
}
}
19 changes: 9 additions & 10 deletions app/src/main/java/dev/dimension/flare/common/AnimatedPngDecoder.kt
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
package dev.dimension.flare.common

import coil3.ImageLoader
import coil3.annotation.ExperimentalCoilApi
import coil3.asCoilImage
import coil3.decode.DecodeResult
import coil3.decode.Decoder
import coil3.decode.ImageSource
import coil3.fetch.SourceFetchResult
import coil3.request.Options
import coil.ImageLoader
import coil.annotation.ExperimentalCoilApi
import coil.decode.DecodeResult
import coil.decode.Decoder
import coil.decode.ImageSource
import coil.fetch.SourceResult
import coil.request.Options
import com.github.penfeizhou.animation.apng.APNGDrawable
import com.github.penfeizhou.animation.apng.decode.APNGParser

internal class AnimatedPngDecoder(private val source: ImageSource) : Decoder {
@OptIn(ExperimentalCoilApi::class)
override suspend fun decode(): DecodeResult {
return DecodeResult(
image = APNGDrawable.fromFile(source.file().toString()).asCoilImage(),
drawable = APNGDrawable.fromFile(source.file().toString()),
isSampled = false,
)
}

class Factory : Decoder.Factory {
override fun create(
result: SourceFetchResult,
result: SourceResult,
options: Options,
imageLoader: ImageLoader,
): Decoder? {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,25 @@
package dev.dimension.flare.common

import coil3.ImageLoader
import coil3.annotation.ExperimentalCoilApi
import coil3.asCoilImage
import coil3.decode.DecodeResult
import coil3.decode.Decoder
import coil3.decode.ImageSource
import coil3.fetch.SourceFetchResult
import coil3.request.Options
import coil.ImageLoader
import coil.decode.DecodeResult
import coil.decode.Decoder
import coil.decode.ImageSource
import coil.fetch.SourceResult
import coil.request.Options
import com.github.penfeizhou.animation.webp.WebPDrawable
import com.github.penfeizhou.animation.webp.decode.WebPParser

internal class AnimatedWebPDecoder(private val source: ImageSource) : Decoder {
@OptIn(ExperimentalCoilApi::class)
override suspend fun decode(): DecodeResult {
return DecodeResult(
image = WebPDrawable.fromFile(source.file().toString()).asCoilImage(),
drawable = WebPDrawable.fromFile(source.file().toString()),
isSampled = false,
)
}

class Factory : Decoder.Factory {
override fun create(
result: SourceFetchResult,
result: SourceResult,
options: Options,
imageLoader: ImageLoader,
): Decoder? {
Expand Down
41 changes: 15 additions & 26 deletions app/src/main/java/dev/dimension/flare/ui/AppContainer.kt
Original file line number Diff line number Diff line change
@@ -1,19 +1,9 @@
package dev.dimension.flare.ui

import android.os.Build
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import coil3.ImageLoader
import coil3.annotation.ExperimentalCoilApi
import coil3.compose.setSingletonImageLoaderFactory
import coil3.gif.AnimatedImageDecoder
import coil3.gif.GifDecoder
import coil3.request.crossfade
import coil3.svg.SvgDecoder
import dev.dimension.flare.common.AnimatedPngDecoder
import dev.dimension.flare.common.AnimatedWebPDecoder
import dev.dimension.flare.data.model.AppearanceSettings
import dev.dimension.flare.data.model.LocalAppearanceSettings
import dev.dimension.flare.data.repository.SettingsRepository
Expand All @@ -29,24 +19,23 @@ fun AppContainer(afterInit: () -> Unit) {
}
}

@OptIn(ExperimentalCoilApi::class)
@Composable
fun FlareApp(content: @Composable () -> Unit) {
setSingletonImageLoaderFactory { context ->
ImageLoader.Builder(context)
.components {
if (Build.VERSION.SDK_INT >= 28) {
add(AnimatedImageDecoder.Factory())
} else {
add(GifDecoder.Factory())
}
add(AnimatedPngDecoder.Factory())
add(SvgDecoder.Factory())
add(AnimatedWebPDecoder.Factory())
}
.crossfade(true)
.build()
}
// setSingletonImageLoaderFactory { context ->
// ImageLoader.Builder(context)
// .components {
// if (Build.VERSION.SDK_INT >= 28) {
// add(AnimatedImageDecoder.Factory())
// } else {
// add(GifDecoder.Factory())
// }
// add(AnimatedPngDecoder.Factory())
// add(SvgDecoder.Factory())
// add(AnimatedWebPDecoder.Factory())
// }
// .crossfade(true)
// .build()
// }
val settingsRepository = koinInject<SettingsRepository>()
val appearanceSettings by settingsRepository.appearanceSettings.collectAsState(
AppearanceSettings(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ import androidx.compose.ui.graphics.drawscope.DrawScope
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import coil3.compose.AsyncImagePainter
import coil3.compose.SubcomposeAsyncImage
import coil3.compose.rememberAsyncImagePainter
import coil3.request.ImageRequest
import coil3.size.Size
import coil.compose.AsyncImagePainter
import coil.compose.SubcomposeAsyncImage
import coil.compose.rememberAsyncImagePainter
import coil.request.ImageRequest
import coil.size.Size
import com.eygraber.compose.placeholder.material3.placeholder

@Composable
Expand Down

This file was deleted.

Loading

0 comments on commit 08a66b9

Please sign in to comment.