diff --git a/libraries/apollo-compose-support/src/main/java/com/apollographql/apollo3/compose/State.kt b/libraries/apollo-compose-support/src/main/java/com/apollographql/apollo3/compose/State.kt index a8991299fc0..841eb62ac57 100644 --- a/libraries/apollo-compose-support/src/main/java/com/apollographql/apollo3/compose/State.kt +++ b/libraries/apollo-compose-support/src/main/java/com/apollographql/apollo3/compose/State.kt @@ -11,6 +11,7 @@ import com.apollographql.apollo3.api.Operation import com.apollographql.apollo3.api.Query import com.apollographql.apollo3.cache.normalized.watch import com.apollographql.apollo3.exception.ApolloException +import kotlinx.coroutines.flow.catch import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext @@ -35,6 +36,7 @@ import kotlin.coroutines.EmptyCoroutineContext fun ApolloCall.toState(context: CoroutineContext = EmptyCoroutineContext): State?> { val responseFlow = remember { toFlow() + .catch { emit(ApolloResponse(this@toState, it as? ApolloException ?: throw it)) } } return responseFlow.collectAsState(initial = null, context = context) } @@ -59,6 +61,7 @@ fun ApolloCall.toState(context: CoroutineContext = Empty fun ApolloCall.watchAsState(context: CoroutineContext = EmptyCoroutineContext): State?> { val responseFlow = remember { watch() + .catch { emit(ApolloResponse(this@watchAsState, it as? ApolloException ?: throw it)) } } return responseFlow.collectAsState(initial = null, context = context) }