aniyomi/app/src/main/java/eu/kanade/tachiyomi/App.kt

85 lines
2.8 KiB
Kotlin
Raw Normal View History

package eu.kanade.tachiyomi
import android.app.Application
2016-10-15 12:12:16 +03:00
import android.content.Context
import android.content.res.Configuration
2020-04-15 00:13:45 +03:00
import android.os.Build
import android.webkit.WebView
2020-02-22 06:58:19 +03:00
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.lifecycle.ProcessLifecycleOwner
import androidx.multidex.MultiDex
import eu.kanade.tachiyomi.data.notification.Notifications
2020-02-22 06:58:19 +03:00
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
2020-02-22 21:30:36 +03:00
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
2020-02-03 06:22:54 +03:00
import eu.kanade.tachiyomi.util.system.LocaleHelper
import org.acra.ACRA
import org.acra.annotation.ReportsCrashes
import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.InjektScope
2020-02-22 06:58:19 +03:00
import uy.kohesive.injekt.injectLazy
import uy.kohesive.injekt.registry.default.DefaultRegistrar
@ReportsCrashes(
formUri = "http://tachiyomi.kanade.eu/crash_report",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
buildConfigClass = BuildConfig::class,
2020-01-08 03:20:08 +03:00
excludeMatchingSharedPreferencesKeys = [".*username.*", ".*password.*", ".*token.*"]
)
2020-02-22 06:58:19 +03:00
open class App : Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
Injekt = InjektScope(DefaultRegistrar())
Injekt.importModule(AppModule(this))
setupAcra()
setupNotificationChannels()
LocaleHelper.updateConfiguration(this, resources.configuration)
2020-02-22 06:58:19 +03:00
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
2020-04-15 00:13:45 +03:00
// Avoid sharing WebView instance across multiple processes
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
val processName = getProcessName()
if (packageName != processName) {
WebView.setDataDirectorySuffix(processName)
}
}
}
2016-10-15 12:12:16 +03:00
override fun attachBaseContext(base: Context) {
super.attachBaseContext(base)
2019-04-13 16:10:44 +03:00
MultiDex.install(this)
2016-10-15 12:12:16 +03:00
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
LocaleHelper.updateConfiguration(this, newConfig, true)
}
2020-02-22 06:58:19 +03:00
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
2020-04-15 00:13:45 +03:00
@Suppress("unused")
2020-02-22 06:58:19 +03:00
fun onAppBackgrounded() {
val preferences: PreferencesHelper by injectLazy()
if (preferences.lockAppAfter().getOrDefault() >= 0) {
2020-02-22 21:30:36 +03:00
SecureActivityDelegate.locked = true
2020-02-22 06:58:19 +03:00
}
}
protected open fun setupAcra() {
ACRA.init(this)
}
protected open fun setupNotificationChannels() {
Notifications.createChannels(this)
}
}