diff --git a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModel.kt b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModel.kt index 0c796d7..7e8e000 100644 --- a/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModel.kt +++ b/app/src/main/java/gq/kirmanak/mealient/ui/disclaimer/DisclaimerViewModel.kt @@ -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 get() = disclaimerStorage.isDisclaimerAcceptedFlow.asLiveData() - private val _okayCountDown = MutableLiveData(FULL_COUNT_DOWN_SEC) val okayCountDown: LiveData = _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) }