2016-03-19 17:48:55 +01:00
|
|
|
package eu.kanade.tachiyomi
|
|
|
|
|
|
|
|
import android.app.Application
|
2016-10-15 11:12:16 +02:00
|
|
|
import android.content.Context
|
2016-12-13 20:47:46 +01:00
|
|
|
import android.content.res.Configuration
|
2020-02-22 04:58:19 +01:00
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
|
import androidx.lifecycle.LifecycleObserver
|
|
|
|
import androidx.lifecycle.OnLifecycleEvent
|
|
|
|
import androidx.lifecycle.ProcessLifecycleOwner
|
2020-01-05 17:29:27 +01:00
|
|
|
import androidx.multidex.MultiDex
|
2016-11-06 18:44:14 +01:00
|
|
|
import com.evernote.android.job.JobManager
|
2017-04-04 17:42:17 +02:00
|
|
|
import eu.kanade.tachiyomi.data.backup.BackupCreatorJob
|
2016-11-06 18:44:14 +01:00
|
|
|
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
|
2017-10-10 14:15:41 +02:00
|
|
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
2020-02-22 04:58:19 +01:00
|
|
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
|
|
|
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
2017-12-11 20:01:28 +01:00
|
|
|
import eu.kanade.tachiyomi.data.updater.UpdaterJob
|
2020-02-22 04:58:19 +01:00
|
|
|
import eu.kanade.tachiyomi.ui.security.BiometricUnlockDelegate
|
2020-02-03 04:22:54 +01:00
|
|
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
2016-03-19 17:48:55 +01:00
|
|
|
import org.acra.ACRA
|
|
|
|
import org.acra.annotation.ReportsCrashes
|
|
|
|
import timber.log.Timber
|
2016-06-14 15:13:48 +02:00
|
|
|
import uy.kohesive.injekt.Injekt
|
2016-06-15 17:58:28 +02:00
|
|
|
import uy.kohesive.injekt.api.InjektScope
|
2020-02-22 04:58:19 +01:00
|
|
|
import uy.kohesive.injekt.injectLazy
|
2016-06-15 17:58:28 +02:00
|
|
|
import uy.kohesive.injekt.registry.default.DefaultRegistrar
|
2016-03-19 17:48:55 +01:00
|
|
|
|
|
|
|
@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 01:20:08 +01:00
|
|
|
excludeMatchingSharedPreferencesKeys = [".*username.*", ".*password.*", ".*token.*"]
|
2016-03-19 17:48:55 +01:00
|
|
|
)
|
2020-02-22 04:58:19 +01:00
|
|
|
open class App : Application(), LifecycleObserver {
|
2016-03-19 17:48:55 +01:00
|
|
|
|
|
|
|
override fun onCreate() {
|
|
|
|
super.onCreate()
|
2018-01-09 12:27:45 +01:00
|
|
|
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
|
|
|
|
|
2016-06-15 17:58:28 +02:00
|
|
|
Injekt = InjektScope(DefaultRegistrar())
|
2016-06-14 15:13:48 +02:00
|
|
|
Injekt.importModule(AppModule(this))
|
2016-06-15 17:58:28 +02:00
|
|
|
|
2016-03-19 17:48:55 +01:00
|
|
|
setupAcra()
|
2016-11-06 18:44:14 +01:00
|
|
|
setupJobManager()
|
2017-10-10 14:15:41 +02:00
|
|
|
setupNotificationChannels()
|
2016-12-13 20:47:46 +01:00
|
|
|
|
2016-12-26 16:56:19 +01:00
|
|
|
LocaleHelper.updateConfiguration(this, resources.configuration)
|
2020-02-22 04:58:19 +01:00
|
|
|
|
|
|
|
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
|
2016-03-19 17:48:55 +01:00
|
|
|
}
|
|
|
|
|
2016-10-15 11:12:16 +02:00
|
|
|
override fun attachBaseContext(base: Context) {
|
|
|
|
super.attachBaseContext(base)
|
2019-04-13 15:10:44 +02:00
|
|
|
MultiDex.install(this)
|
2016-10-15 11:12:16 +02:00
|
|
|
}
|
|
|
|
|
2016-12-13 20:47:46 +01:00
|
|
|
override fun onConfigurationChanged(newConfig: Configuration) {
|
|
|
|
super.onConfigurationChanged(newConfig)
|
2016-12-26 16:56:19 +01:00
|
|
|
LocaleHelper.updateConfiguration(this, newConfig, true)
|
2016-12-13 20:47:46 +01:00
|
|
|
}
|
|
|
|
|
2020-02-22 04:58:19 +01:00
|
|
|
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
|
|
|
|
fun onAppBackgrounded() {
|
|
|
|
val preferences: PreferencesHelper by injectLazy()
|
|
|
|
if (preferences.lockAppAfter().getOrDefault() >= 0) {
|
|
|
|
BiometricUnlockDelegate.locked = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-19 17:48:55 +01:00
|
|
|
protected open fun setupAcra() {
|
|
|
|
ACRA.init(this)
|
|
|
|
}
|
|
|
|
|
2016-11-06 18:44:14 +01:00
|
|
|
protected open fun setupJobManager() {
|
2019-03-14 21:44:20 +01:00
|
|
|
try {
|
|
|
|
JobManager.create(this).addJobCreator { tag ->
|
|
|
|
when (tag) {
|
|
|
|
LibraryUpdateJob.TAG -> LibraryUpdateJob()
|
|
|
|
UpdaterJob.TAG -> UpdaterJob()
|
|
|
|
BackupCreatorJob.TAG -> BackupCreatorJob()
|
|
|
|
else -> null
|
|
|
|
}
|
2016-11-06 18:44:14 +01:00
|
|
|
}
|
2019-03-14 21:44:20 +01:00
|
|
|
} catch (e: Exception) {
|
|
|
|
Timber.w("Can't initialize job manager")
|
2016-11-06 18:44:14 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-10-10 14:15:41 +02:00
|
|
|
protected open fun setupNotificationChannels() {
|
|
|
|
Notifications.createChannels(this)
|
|
|
|
}
|
|
|
|
|
2016-03-19 17:48:55 +01:00
|
|
|
}
|