Commits

Claus Rasmussen authored c169f8e4144
Set logout timer to agreed 5 minutes
No tags

app/src/main/java/dk/nsp/mingraviditet/ui/main/AppInBackgroundViewModel.kt

Modified
32 32 import androidx.lifecycle.LifecycleOwner
33 33 import androidx.lifecycle.ViewModel
34 34 import androidx.lifecycle.viewModelScope
35 35 import dagger.hilt.android.lifecycle.HiltViewModel
36 36 import dk.nsp.domain.repository.SettingsRepository
37 37 import kotlinx.coroutines.flow.MutableSharedFlow
38 38 import kotlinx.coroutines.flow.MutableStateFlow
39 39 import kotlinx.coroutines.flow.collectLatest
40 40 import kotlinx.coroutines.flow.map
41 41 import kotlinx.coroutines.launch
42 -import timber.log.Timber
43 42 import java.time.LocalDateTime
44 43 import javax.inject.Inject
45 44
46 -private const val TIMEOUT_SECONDS = 20L
45 +private const val TIMEOUT_SECONDS = 5 * 60L // 5 minutes
47 46
48 47 @HiltViewModel
49 48 class AppInBackgroundViewModel @Inject constructor(
50 49 settingsRepository: SettingsRepository,
51 50 ) : ViewModel(), DefaultLifecycleObserver {
52 51
53 52 private var onStopTime = MutableStateFlow<LocalDateTime?>(null)
54 53
55 54 val logoutEvent = MutableSharedFlow<Unit?>(replay = 0)
56 55
57 56 private val useBiometricsPreference = settingsRepository.preferences.map {
58 57 it.useBiometrics
59 58 }
60 59
61 60 override fun onResume(owner: LifecycleOwner) {
62 61 super.onResume(owner)
63 62
64 63 viewModelScope.launch {
65 64 // Copy of onStopTime, since collectLatest is a terminal flow operator
66 65 useBiometricsPreference.collectLatest { useBiometrics ->
67 66 if (useBiometrics && onStopTime.value?.isBefore(LocalDateTime.now().minusSeconds(TIMEOUT_SECONDS)) == true) {
68 - Timber.d("Log user out")
69 67 logoutEvent.emit(Unit)
70 68 }
71 69
72 70 // Reset timer
73 71 onStopTime.value = null
74 72 }
75 73 }
76 74 }
77 75
78 76 override fun onStop(owner: LifecycleOwner) {

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut