60 lines
2 KiB
Kotlin
60 lines
2 KiB
Kotlin
package dev.jdtech.jellyfin
|
|
|
|
import android.app.Application
|
|
import androidx.appcompat.app.AppCompatDelegate
|
|
import androidx.hilt.work.HiltWorkerFactory
|
|
import androidx.work.Configuration
|
|
import coil.ImageLoader
|
|
import coil.ImageLoaderFactory
|
|
import coil.decode.SvgDecoder
|
|
import coil.disk.DiskCache
|
|
import coil.request.CachePolicy
|
|
import com.google.android.material.color.DynamicColors
|
|
import dagger.hilt.android.HiltAndroidApp
|
|
import timber.log.Timber
|
|
import javax.inject.Inject
|
|
|
|
@HiltAndroidApp
|
|
class BaseApplication : Application(), Configuration.Provider, ImageLoaderFactory {
|
|
@Inject
|
|
lateinit var appPreferences: AppPreferences
|
|
|
|
@Inject
|
|
lateinit var workerFactory: HiltWorkerFactory
|
|
|
|
override fun getWorkManagerConfiguration() =
|
|
Configuration.Builder()
|
|
.setWorkerFactory(workerFactory)
|
|
.build()
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
|
|
if (BuildConfig.DEBUG) {
|
|
Timber.plant(Timber.DebugTree())
|
|
}
|
|
|
|
when (appPreferences.theme) {
|
|
"system" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
|
|
"light" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
|
|
"dark" -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
|
|
}
|
|
|
|
if (appPreferences.dynamicColors) DynamicColors.applyToActivitiesIfAvailable(this)
|
|
}
|
|
|
|
override fun newImageLoader(): ImageLoader {
|
|
return ImageLoader.Builder(this)
|
|
.components {
|
|
add(SvgDecoder.Factory())
|
|
}
|
|
.diskCachePolicy(if (appPreferences.imageCache) CachePolicy.ENABLED else CachePolicy.DISABLED)
|
|
.diskCache {
|
|
DiskCache.Builder()
|
|
.directory(this.cacheDir.resolve("image_cache"))
|
|
.maxSizeBytes(appPreferences.imageCacheSize * 1024L * 1024)
|
|
.build()
|
|
}
|
|
.build()
|
|
}
|
|
}
|