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