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..3865af09881 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,8 @@ 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 com.benasher44.uuid.uuid4 +import kotlinx.coroutines.flow.catch import kotlin.coroutines.CoroutineContext import kotlin.coroutines.EmptyCoroutineContext @@ -35,6 +37,7 @@ import kotlin.coroutines.EmptyCoroutineContext fun ApolloCall.toState(context: CoroutineContext = EmptyCoroutineContext): State?> { val responseFlow = remember { toFlow() + .catch { emit(ApolloResponse.Builder(operation, uuid4(), it as? ApolloException ?: throw it).build()) } } return responseFlow.collectAsState(initial = null, context = context) } @@ -59,6 +62,7 @@ fun ApolloCall.toState(context: CoroutineContext = Empty fun ApolloCall.watchAsState(context: CoroutineContext = EmptyCoroutineContext): State?> { val responseFlow = remember { watch() + .catch { emit(ApolloResponse.Builder(operation, uuid4(), it as? ApolloException ?: throw it).build()) } } return responseFlow.collectAsState(initial = null, context = context) }