From 0a5d12dc8fb81369b418607210ae3f5ab3232166 Mon Sep 17 00:00:00 2001 From: Benoit Lubek Date: Mon, 24 Jul 2023 11:10:57 +0200 Subject: [PATCH] Catch ApolloException in toState and watchAsState (#5116) --- .../src/main/java/com/apollographql/apollo3/compose/State.kt | 4 ++++ 1 file changed, 4 insertions(+) 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) }