Fix restarting count down in disclaimer

This commit is contained in:
Kirill Kamakin
2022-04-08 21:25:14 +05:00
parent d2029438d7
commit 0768842405

View File

@@ -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)
}