ananas/app/src/main/java/dev/jdtech/jellyfin/di/GlideModule.kt
2022-03-29 13:01:47 +02:00

49 lines
No EOL
1.8 KiB
Kotlin

package dev.jdtech.jellyfin.di
import android.content.Context
import androidx.preference.PreferenceManager
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.load.engine.DiskCacheStrategy.NONE
import com.bumptech.glide.load.engine.DiskCacheStrategy.RESOURCE
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory
import com.bumptech.glide.module.AppGlideModule
import com.bumptech.glide.request.RequestOptions
import dev.jdtech.jellyfin.utils.Constants
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import timber.log.Timber
@GlideModule
class GlideModule : AppGlideModule() {
override fun applyOptions(context: Context, builder: GlideBuilder) {
val preferences = PreferenceManager.getDefaultSharedPreferences(context)
val use = preferences.getBoolean(Constants.PREF_IMAGE_CACHE, true)
if (use) {
val sizeMb = preferences.getString(Constants.PREF_IMAGE_CACHE_SIZE, "${Constants.DEFAULT_CACHE_SIZE}")?.toInt()!!
val sizeB = 1024L * 1024 * sizeMb
Timber.d("Setting image cache to use $sizeMb MB of disk space")
builder.setDiskCache(InternalCacheDiskCacheFactory(context, sizeB))
builder.caching(enabled = true)
} else {
builder.caching(enabled = false)
Timber.d("Image cache disabled. Clearing all persisted data.")
MainScope().launch {
GlideApp.getPhotoCacheDir(context)?.also {
if (it.exists()) it.deleteRecursively()
}
}
}
}
private fun GlideBuilder.caching(enabled: Boolean) {
setDefaultRequestOptions(
RequestOptions().diskCacheStrategy(
if (enabled) RESOURCE else NONE
)
)
}
}