From 0387bbc4b73c0eef27266f7dc340f72579b1912b Mon Sep 17 00:00:00 2001 From: Renee Vandervelde Date: Sat, 28 Dec 2024 17:12:58 -0600 Subject: [PATCH] Fix collectOn operator --- CHANGELOG.md | 8 ++++++++ coroutines/api/coroutines.api | 2 +- .../coroutines/ongoing/Transformations.kt | 9 ++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d7d5cf..2adb9bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ Change Log ========== +1.8.1 +----- + +### Fixed + - Coroutines + - Fixed `OngoingFlow.collectOn` implementation from throwing an error + during collection. + 1.8.0 ----- diff --git a/coroutines/api/coroutines.api b/coroutines/api/coroutines.api index 81b42f5..0e9bd16 100644 --- a/coroutines/api/coroutines.api +++ b/coroutines/api/coroutines.api @@ -88,7 +88,7 @@ public abstract interface class com/inkapplications/coroutines/ongoing/OngoingFl } public final class com/inkapplications/coroutines/ongoing/TransformationsKt { - public static final fun collectOn (Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function2;)Ljava/lang/Void; + public static final fun collectOn (Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lkotlinx/coroutines/CoroutineScope;Lkotlin/jvm/functions/Function2;)Lkotlinx/coroutines/Job; public static final fun combine (Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lkotlin/jvm/functions/Function5;)Lcom/inkapplications/coroutines/ongoing/OngoingFlow; public static final fun combine (Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lkotlin/jvm/functions/Function4;)Lcom/inkapplications/coroutines/ongoing/OngoingFlow; public static final fun combine (Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lcom/inkapplications/coroutines/ongoing/OngoingFlow;Lkotlin/jvm/functions/Function3;)Lcom/inkapplications/coroutines/ongoing/OngoingFlow; diff --git a/coroutines/src/commonMain/kotlin/com/inkapplications/coroutines/ongoing/Transformations.kt b/coroutines/src/commonMain/kotlin/com/inkapplications/coroutines/ongoing/Transformations.kt index 6aee30d..cca9250 100644 --- a/coroutines/src/commonMain/kotlin/com/inkapplications/coroutines/ongoing/Transformations.kt +++ b/coroutines/src/commonMain/kotlin/com/inkapplications/coroutines/ongoing/Transformations.kt @@ -3,7 +3,9 @@ package com.inkapplications.coroutines.ongoing import com.inkapplications.coroutines.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.Job import kotlinx.coroutines.flow.* +import kotlinx.coroutines.launch /** * Modify an ongoing flow temporarily as a standard flow. @@ -203,9 +205,10 @@ suspend fun OngoingFlow.safeCollect( fun OngoingFlow.collectOn( scope: CoroutineScope, observer: suspend (T) -> Unit, -): Nothing { - asFlow().collectOn(scope, observer) - throw UnexpectedEndOfFlow() +): Job { + return scope.launch { + safeCollect(observer) + } } /**