Fix restarting count down in disclaimer
This commit is contained in:
@@ -5,10 +5,7 @@ import androidx.lifecycle.*
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import gq.kirmanak.mealient.data.disclaimer.DisclaimerStorage
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.flow.take
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import java.util.concurrent.TimeUnit
|
||||
@@ -18,11 +15,12 @@ import javax.inject.Inject
|
||||
class DisclaimerViewModel @Inject constructor(
|
||||
private val disclaimerStorage: DisclaimerStorage
|
||||
) : ViewModel() {
|
||||
|
||||
val isAccepted: LiveData<Boolean>
|
||||
get() = disclaimerStorage.isDisclaimerAcceptedFlow.asLiveData()
|
||||
|
||||
private val _okayCountDown = MutableLiveData(FULL_COUNT_DOWN_SEC)
|
||||
val okayCountDown: LiveData<Int> = _okayCountDown
|
||||
private var isCountDownStarted = false
|
||||
|
||||
fun acceptDisclaimer() {
|
||||
Timber.v("acceptDisclaimer() called")
|
||||
@@ -31,9 +29,12 @@ class DisclaimerViewModel @Inject constructor(
|
||||
|
||||
fun startCountDown() {
|
||||
Timber.v("startCountDown() called")
|
||||
if (isCountDownStarted) return
|
||||
isCountDownStarted = true
|
||||
tickerFlow(COUNT_DOWN_TICK_PERIOD_SEC.toLong(), TimeUnit.SECONDS)
|
||||
.take(FULL_COUNT_DOWN_SEC - COUNT_DOWN_TICK_PERIOD_SEC + 1)
|
||||
.onEach { _okayCountDown.value = FULL_COUNT_DOWN_SEC - it }
|
||||
.onCompletion { isCountDownStarted = false }
|
||||
.launchIn(viewModelScope)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user