2016-03-19 12:48:55 -04:00
|
|
|
package eu.kanade.tachiyomi
|
|
|
|
|
|
|
|
import android.app.Application
|
2016-10-15 05:12:16 -04:00
|
|
|
import android.content.Context
|
2016-12-13 14:47:46 -05:00
|
|
|
import android.content.res.Configuration
|
2020-06-07 15:47:42 -04:00
|
|
|
import android.os.Build
|
2020-05-02 19:03:48 -04:00
|
|
|
import android.widget.Toast
|
2020-02-21 22:58:19 -05:00
|
|
|
import androidx.lifecycle.Lifecycle
|
|
|
|
import androidx.lifecycle.LifecycleObserver
|
|
|
|
import androidx.lifecycle.OnLifecycleEvent
|
|
|
|
import androidx.lifecycle.ProcessLifecycleOwner
|
2020-01-05 11:29:27 -05:00
|
|
|
import androidx.multidex.MultiDex
|
2017-10-10 08:15:41 -04:00
|
|
|
import eu.kanade.tachiyomi.data.notification.Notifications
|
2020-02-21 22:58:19 -05:00
|
|
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
2020-05-02 19:03:48 -04:00
|
|
|
import eu.kanade.tachiyomi.ui.main.ForceCloseActivity
|
2020-02-22 13:30:36 -05:00
|
|
|
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
|
2020-02-02 22:22:54 -05:00
|
|
|
import eu.kanade.tachiyomi.util.system.LocaleHelper
|
2020-05-02 19:03:48 -04:00
|
|
|
import eu.kanade.tachiyomi.util.system.WebViewUtil
|
|
|
|
import eu.kanade.tachiyomi.util.system.toast
|
2020-06-07 15:47:42 -04:00
|
|
|
import java.security.Security
|
2016-03-19 12:48:55 -04:00
|
|
|
import org.acra.ACRA
|
2020-04-15 22:57:34 -04:00
|
|
|
import org.acra.annotation.AcraCore
|
|
|
|
import org.acra.annotation.AcraHttpSender
|
|
|
|
import org.acra.sender.HttpSender
|
2020-06-07 15:47:42 -04:00
|
|
|
import org.conscrypt.Conscrypt
|
2016-03-19 12:48:55 -04:00
|
|
|
import timber.log.Timber
|
2016-06-14 09:13:48 -04:00
|
|
|
import uy.kohesive.injekt.Injekt
|
2016-06-15 11:58:28 -04:00
|
|
|
import uy.kohesive.injekt.api.InjektScope
|
2020-02-21 22:58:19 -05:00
|
|
|
import uy.kohesive.injekt.injectLazy
|
2016-06-15 11:58:28 -04:00
|
|
|
import uy.kohesive.injekt.registry.default.DefaultRegistrar
|
2016-03-19 12:48:55 -04:00
|
|
|
|
2020-04-15 22:57:34 -04:00
|
|
|
@AcraCore(
|
2020-04-25 14:24:45 -04:00
|
|
|
buildConfigClass = BuildConfig::class,
|
|
|
|
excludeMatchingSharedPreferencesKeys = [".*username.*", ".*password.*", ".*token.*"]
|
2016-03-19 12:48:55 -04:00
|
|
|
)
|
2020-04-15 22:57:34 -04:00
|
|
|
@AcraHttpSender(
|
2020-04-25 14:24:45 -04:00
|
|
|
uri = "https://tachiyomi.kanade.eu/crash_report",
|
|
|
|
httpMethod = HttpSender.Method.PUT
|
2020-04-15 22:57:34 -04:00
|
|
|
)
|
2020-02-21 22:58:19 -05:00
|
|
|
open class App : Application(), LifecycleObserver {
|
2016-03-19 12:48:55 -04:00
|
|
|
|
|
|
|
override fun onCreate() {
|
|
|
|
super.onCreate()
|
2018-01-09 06:27:45 -05:00
|
|
|
if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
|
|
|
|
|
2020-05-02 19:03:48 -04:00
|
|
|
// Enforce WebView availability
|
|
|
|
if (!WebViewUtil.supportsWebView(this)) {
|
|
|
|
toast(R.string.information_webview_required, Toast.LENGTH_LONG)
|
|
|
|
ForceCloseActivity.closeApp(this)
|
|
|
|
}
|
|
|
|
|
2020-07-04 10:27:57 -04:00
|
|
|
// TLS 1.3 support for Android < 10
|
2020-06-07 15:47:42 -04:00
|
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
|
|
|
|
Security.insertProviderAt(Conscrypt.newProvider(), 1)
|
|
|
|
}
|
|
|
|
|
2016-06-15 11:58:28 -04:00
|
|
|
Injekt = InjektScope(DefaultRegistrar())
|
2016-06-14 09:13:48 -04:00
|
|
|
Injekt.importModule(AppModule(this))
|
2016-06-15 11:58:28 -04:00
|
|
|
|
2016-03-19 12:48:55 -04:00
|
|
|
setupAcra()
|
2017-10-10 08:15:41 -04:00
|
|
|
setupNotificationChannels()
|
2016-12-13 14:47:46 -05:00
|
|
|
|
2016-12-26 10:56:19 -05:00
|
|
|
LocaleHelper.updateConfiguration(this, resources.configuration)
|
2020-02-21 22:58:19 -05:00
|
|
|
|
|
|
|
ProcessLifecycleOwner.get().lifecycle.addObserver(this)
|
2016-03-19 12:48:55 -04:00
|
|
|
}
|
|
|
|
|
2016-10-15 05:12:16 -04:00
|
|
|
override fun attachBaseContext(base: Context) {
|
|
|
|
super.attachBaseContext(base)
|
2019-04-13 09:10:44 -04:00
|
|
|
MultiDex.install(this)
|
2016-10-15 05:12:16 -04:00
|
|
|
}
|
|
|
|
|
2016-12-13 14:47:46 -05:00
|
|
|
override fun onConfigurationChanged(newConfig: Configuration) {
|
|
|
|
super.onConfigurationChanged(newConfig)
|
2016-12-26 10:56:19 -05:00
|
|
|
LocaleHelper.updateConfiguration(this, newConfig, true)
|
2016-12-13 14:47:46 -05:00
|
|
|
}
|
|
|
|
|
2020-02-21 22:58:19 -05:00
|
|
|
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
|
2020-04-14 17:13:45 -04:00
|
|
|
@Suppress("unused")
|
2020-02-21 22:58:19 -05:00
|
|
|
fun onAppBackgrounded() {
|
|
|
|
val preferences: PreferencesHelper by injectLazy()
|
2020-04-17 09:28:58 -04:00
|
|
|
if (preferences.lockAppAfter().get() >= 0) {
|
2020-02-22 13:30:36 -05:00
|
|
|
SecureActivityDelegate.locked = true
|
2020-02-21 22:58:19 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-19 12:48:55 -04:00
|
|
|
protected open fun setupAcra() {
|
|
|
|
ACRA.init(this)
|
|
|
|
}
|
|
|
|
|
2017-10-10 08:15:41 -04:00
|
|
|
protected open fun setupNotificationChannels() {
|
|
|
|
Notifications.createChannels(this)
|
|
|
|
}
|
2016-03-19 12:48:55 -04:00
|
|
|
}
|