Mohammad Sianaki
02/20/2022, 11:35 AMLazyRow
:
val timerState = produceState(
initialValue = TimerCounter(0L, 0L, 0L),
key1 = product.id,
producer = {
withContext(Dispatchers.Default) {
val endTimeInMillis =
product.productDeal?.dealEndTime?.toTimeInMillis() ?: return@withContext
val endTimeInSeconds = endTimeInMillis / 1000
while (isActive) {
val currentTimeInSecond = System.currentTimeMillis() / 1000
if (endTimeInSeconds < currentTimeInSecond) {
value = TimerCounter(0L, 0L, 0L)
return@withContext
}
var reminders: Long
val durationInSeconds = endTimeInSeconds - currentTimeInSecond
val remainDays = durationInSeconds / DAY_IN_SECONDS
reminders = durationInSeconds % DAY_IN_SECONDS
val remainHours = ((reminders / HOURS_IN_SECONDS)) + (remainDays * 24)
reminders %= HOURS_IN_SECONDS
val remainMinutes = reminders / MINUTE_IN_SECOND
val remainSecond = reminders % MINUTE_IN_SECOND
value = TimerCounter(remainHours, remainMinutes, remainSecond)
delay(1000)
}
}
}
)
the above code is in composable which shows list item.
is this a right approach? in case not, which Effect
should?Colton Idle
02/21/2022, 8:42 AM