45 lines
1.5 KiB
Kotlin
45 lines
1.5 KiB
Kotlin
|
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
|
||
|
|
||
|
class ImageLoaderProvider (val context: Context) {
|
||
|
private var imageLoader: ImageLoader? = null
|
||
|
|
||
|
@Synchronized
|
||
|
fun clearImageLoader() {
|
||
|
if (imageLoader != null &&
|
||
|
imageLoader!!.isRunning) {
|
||
|
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!!
|
||
|
}
|
||
|
}
|