1package com.peachpasswords23import android.app.Application4import androidx.hilt.work.HiltWorkerFactory5import androidx.lifecycle.DefaultLifecycleObserver6import androidx.lifecycle.LifecycleOwner7import androidx.lifecycle.ProcessLifecycleOwner8import androidx.work.Configuration9import com.peachpasswords.sync.BackgroundSyncPreference10import com.peachpasswords.sync.ForegroundSyncCoordinator11import com.peachpasswords.updates.UpdateCheckWorker12import com.peachpasswords.vault.VaultLockTimer13import com.peachpasswords.vault.VaultRepository14import dagger.hilt.android.HiltAndroidApp15import javax.inject.Inject1617@HiltAndroidApp18class PeachApplication : Application(), Configuration.Provider {19 @Inject lateinit var vault: VaultRepository20 @Inject lateinit var lockTimer: VaultLockTimer21 @Inject lateinit var foregroundSync: ForegroundSyncCoordinator22 @Inject lateinit var backgroundSync: BackgroundSyncPreference23 @Inject lateinit var workerFactory: HiltWorkerFactory2425 override val workManagerConfiguration: Configuration26 get() = Configuration.Builder().setWorkerFactory(workerFactory).build()2728 override fun onCreate() {29 super.onCreate()3031 32 33 34 UpdateCheckWorker.schedulePeriodic(this)35 UpdateCheckWorker.checkNow(this)36 37 38 39 ProcessLifecycleOwner.get().lifecycle.addObserver(object : DefaultLifecycleObserver {40 override fun onStart(owner: LifecycleOwner) {41 foregroundSync.triggerForegroundSync()42 }4344 override fun onStop(owner: LifecycleOwner) {45 46 47 48 49 50 if (vault.consumeTransientBackgroundSuppression()) return51 if (backgroundSync.enabled.value && vault.isUnlocked.value) {52 53 54 55 56 57 vault.lockUiGate()58 } else {59 vault.lock()60 lockTimer.cancel()61 }62 }63 })64 }65}