PeachApplication.kt

1.3 KB · raw

1package com.peachpasswords23import android.app.Application4import androidx.lifecycle.DefaultLifecycleObserver5import androidx.lifecycle.LifecycleOwner6import androidx.lifecycle.ProcessLifecycleOwner7import com.peachpasswords.sync.ForegroundSyncCoordinator8import com.peachpasswords.vault.VaultLockTimer9import com.peachpasswords.vault.VaultRepository10import dagger.hilt.android.HiltAndroidApp11import javax.inject.Inject1213@HiltAndroidApp14class PeachApplication : Application() {15    @Inject lateinit var vault: VaultRepository16    @Inject lateinit var lockTimer: VaultLockTimer17    @Inject lateinit var foregroundSync: ForegroundSyncCoordinator1819    override fun onCreate() {20        super.onCreate()21        // Lock the vault the moment the whole app goes to background (CF-1).22        // ProcessLifecycleOwner is process-wide and debounced, so a rotation or a23        // brief Activity restart does not trip it — only a genuine backgrounding.24        ProcessLifecycleOwner.get().lifecycle.addObserver(object : DefaultLifecycleObserver {25            override fun onStart(owner: LifecycleOwner) {26                foregroundSync.triggerForegroundSync()27            }2829            override fun onStop(owner: LifecycleOwner) {30                vault.lock()31                lockTimer.cancel()32            }33        })34    }35}