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.sync.LockedSyncSpoolHooks12import com.peachpasswords.sync.LockedSyncSpoolStore13import com.peachpasswords.updates.UpdateCheckWorker14import com.peachpasswords.vault.VaultLockTimer15import com.peachpasswords.vault.VaultRepository16import dagger.hilt.android.HiltAndroidApp17import javax.inject.Inject1819@HiltAndroidApp20class PeachApplication : Application(), Configuration.Provider {21 @Inject lateinit var vault: VaultRepository22 @Inject lateinit var lockTimer: VaultLockTimer23 @Inject lateinit var foregroundSync: ForegroundSyncCoordinator24 @Inject lateinit var backgroundSync: BackgroundSyncPreference25 @Inject lateinit var lockedSyncSpool: LockedSyncSpoolStore26 @Inject lateinit var workerFactory: HiltWorkerFactory2728 override val workManagerConfiguration: Configuration29 get() = Configuration.Builder().setWorkerFactory(workerFactory).build()3031 override fun onCreate() {32 super.onCreate()33 LockedSyncSpoolHooks.refresh = lockedSyncSpool::refresh3435 36 37 38 UpdateCheckWorker.schedulePeriodic(this)39 UpdateCheckWorker.checkNow(this)40 41 42 43 ProcessLifecycleOwner.get().lifecycle.addObserver(object : DefaultLifecycleObserver {44 override fun onStart(owner: LifecycleOwner) {45 foregroundSync.triggerForegroundSync()46 }4748 override fun onStop(owner: LifecycleOwner) {49 50 51 52 53 54 if (vault.consumeTransientBackgroundSuppression()) return55 if (backgroundSync.enabled.value && vault.isUnlocked.value) {56 57 58 59 runCatching { lockedSyncSpool.refresh(vault) }60 vault.lock()61 } else {62 vault.lock()63 lockTimer.cancel()64 }65 }66 })67 }68}