@ -29,11 +29,15 @@ import com.github.piasy.biv.loader.glide.GlideCustomImageLoader
import com.keylesspalace.tusky.components.notifications.NotificationWorkerFactory
import com.keylesspalace.tusky.di.AppInjector
import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.*
import com.keylesspalace.tusky.util.EmojiCompatFont
import com.keylesspalace.tusky.util.LocaleManager
import com.keylesspalace.tusky.util.ThemeUtils
import com.uber.autodispose.AutoDisposePlugins
import dagger.Lazy
import dagger.android.DispatchingAndroidInjector
import dagger.android.HasAndroidInjector
import io.reactivex.plugins.RxJavaPlugins
import io.reactivex.schedulers.Schedulers
import org.conscrypt.Conscrypt
import java.security.Security
import javax.inject.Inject
@ -42,11 +46,21 @@ class TuskyApplication : Application(), HasAndroidInjector {
@Inject
lateinit var androidInjector : DispatchingAndroidInjector < Any >
@Inject
lateinit var notificationWorkerFactory : NotificationWorkerFactory
lateinit var notificationWorkerFactory : Lazy < NotificationWorkerFactory >
override fun onCreate ( ) {
// Uncomment me to get StrictMode violation logs
// if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
// StrictMode.setThreadPolicy(StrictMode.ThreadPolicy.Builder()
// .detectDiskReads()
// .detectDiskWrites()
// .detectNetwork()
// .detectUnbufferedIo()
// .penaltyLog()
// .build())
// }
super . onCreate ( )
Security . insertProviderAt ( Conscrypt . newProvider ( ) , 1 )
@ -68,19 +82,22 @@ class TuskyApplication : Application(), HasAndroidInjector {
val theme = preferences . getString ( " appTheme " , ThemeUtils . APP _THEME _DEFAULT )
ThemeUtils . setAppNightMode ( theme )
WorkManager . initialize (
this ,
androidx . work . Configuration . Builder ( )
. setWorkerFactory ( notificationWorkerFactory )
. build ( )
)
RxJavaPlugins . setErrorHandler {
Log . w ( " RxJava " , " undeliverable exception " , it )
}
SubsamplingScaleImageView . setPreferredBitmapConfig ( Bitmap . Config . ARGB _8888 )
BigImageViewer . initialize ( GlideCustomImageLoader . with ( this ) )
// This will initialize the whole network stack and cache so we don't wan to wait for it
Schedulers . computation ( ) . scheduleDirect {
WorkManager . initialize (
this ,
androidx . work . Configuration . Builder ( )
. setWorkerFactory ( notificationWorkerFactory . get ( ) )
. build ( )
)
}
}
override fun attachBaseContext ( base : Context ) {
@ -99,4 +116,4 @@ class TuskyApplication : Application(), HasAndroidInjector {
@JvmStatic
lateinit var localeManager : LocaleManager
}
}
}