2021-02-04 20:15:58 +01:00
|
|
|
package org.moire.ultrasonic.subsonic
|
|
|
|
|
|
|
|
import android.content.Context
|
|
|
|
import org.koin.java.KoinJavaComponent.get
|
|
|
|
import org.moire.ultrasonic.featureflags.Feature
|
|
|
|
import org.moire.ultrasonic.featureflags.FeatureStorage
|
|
|
|
import org.moire.ultrasonic.subsonic.loader.image.SubsonicImageLoader
|
|
|
|
import org.moire.ultrasonic.util.ImageLoader
|
|
|
|
import org.moire.ultrasonic.util.LegacyImageLoader
|
|
|
|
import org.moire.ultrasonic.util.Util
|
|
|
|
|
2021-02-14 15:55:16 +01:00
|
|
|
class ImageLoaderProvider(val context: Context) {
|
2021-02-04 20:15:58 +01:00
|
|
|
private var imageLoader: ImageLoader? = null
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
fun clearImageLoader() {
|
2021-02-14 15:55:16 +01:00
|
|
|
if (
|
|
|
|
imageLoader != null &&
|
|
|
|
imageLoader!!.isRunning
|
|
|
|
) {
|
2021-02-04 20:15:58 +01:00
|
|
|
imageLoader!!.clear()
|
|
|
|
}
|
|
|
|
imageLoader = null
|
|
|
|
}
|
|
|
|
|
|
|
|
@Synchronized
|
|
|
|
fun getImageLoader(): ImageLoader {
|
|
|
|
if (imageLoader == null || !imageLoader!!.isRunning) {
|
|
|
|
val legacyImageLoader = LegacyImageLoader(
|
|
|
|
context,
|
|
|
|
Util.getImageLoaderConcurrency(context)
|
|
|
|
)
|
|
|
|
val isNewImageLoaderEnabled = get(FeatureStorage::class.java)
|
|
|
|
.isFeatureEnabled(Feature.NEW_IMAGE_DOWNLOADER)
|
|
|
|
if (isNewImageLoaderEnabled) {
|
|
|
|
imageLoader = SubsonicImageLoaderProxy(
|
|
|
|
legacyImageLoader,
|
|
|
|
get(SubsonicImageLoader::class.java)
|
|
|
|
)
|
|
|
|
} else {
|
|
|
|
imageLoader = legacyImageLoader
|
|
|
|
}
|
|
|
|
imageLoader!!.startImageLoader()
|
|
|
|
}
|
|
|
|
return imageLoader!!
|
|
|
|
}
|
2021-02-14 15:55:16 +01:00
|
|
|
}
|