Fix downloading (close #1072)

This commit is contained in:
Koitharu
2024-09-04 14:33:08 +03:00
parent e34e745c84
commit c1ac207809

View File

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