|
|
|
@ -5,7 +5,7 @@ import kotlinx.coroutines.delay
|
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
|
import kotlinx.coroutines.flow.Flow
|
|
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
|
|
import kotlinx.coroutines.flow.StateFlow
|
|
|
|
import kotlinx.coroutines.flow.channelFlow
|
|
|
|
import kotlinx.coroutines.flow.channelFlow
|
|
|
|
import kotlinx.coroutines.flow.collectLatest
|
|
|
|
import kotlinx.coroutines.flow.collect
|
|
|
|
import kotlinx.coroutines.flow.combine
|
|
|
|
import kotlinx.coroutines.flow.combine
|
|
|
|
import kotlinx.coroutines.flow.first
|
|
|
|
import kotlinx.coroutines.flow.first
|
|
|
|
import kotlinx.coroutines.flow.firstOrNull
|
|
|
|
import kotlinx.coroutines.flow.firstOrNull
|
|
|
|
@ -15,6 +15,7 @@ import kotlinx.coroutines.flow.onCompletion
|
|
|
|
import kotlinx.coroutines.flow.onEach
|
|
|
|
import kotlinx.coroutines.flow.onEach
|
|
|
|
import kotlinx.coroutines.flow.transform
|
|
|
|
import kotlinx.coroutines.flow.transform
|
|
|
|
import kotlinx.coroutines.flow.transformLatest
|
|
|
|
import kotlinx.coroutines.flow.transformLatest
|
|
|
|
|
|
|
|
import kotlinx.coroutines.flow.transformWhile
|
|
|
|
import org.koitharu.kotatsu.R
|
|
|
|
import org.koitharu.kotatsu.R
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
import java.util.concurrent.TimeUnit
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
|
|
@ -101,7 +102,8 @@ fun <T> Flow<T>.withTicker(interval: Long, timeUnit: TimeUnit) = channelFlow<T>
|
|
|
|
onCompletion { cause ->
|
|
|
|
onCompletion { cause ->
|
|
|
|
close(cause)
|
|
|
|
close(cause)
|
|
|
|
}.combine(tickerFlow(interval, timeUnit)) { x, _ -> x }
|
|
|
|
}.combine(tickerFlow(interval, timeUnit)) { x, _ -> x }
|
|
|
|
.collectLatest { send(it) }
|
|
|
|
.transformWhile<T, Unit> { trySend(it).isSuccess }
|
|
|
|
|
|
|
|
.collect()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
|
|
@Suppress("UNCHECKED_CAST")
|
|
|
|
|