Skip to content

Instantly share code, notes, and snippets.

@CompileConnected
Last active August 8, 2020 15:44
Show Gist options
  • Select an option

  • Save CompileConnected/1701801ac8f14265c47c2cffac192d5d to your computer and use it in GitHub Desktop.

Select an option

Save CompileConnected/1701801ac8f14265c47c2cffac192d5d to your computer and use it in GitHub Desktop.
GraphQLExtensions
import com.apollographql.apollo.api.Response
import com.apollographql.apollo.GraphQLCall
import com.apollographql.apollo.exception.ApolloException
import kotlinx.coroutines.CompletableDeferred
suspend fun <T> GraphQLCall<T>.toDeferred(): Response<T> {
val deferred = CompletableDeferred<Response<T>>()
deferred.invokeOnCompletion {
if (deferred.isCancelled) {
cancel()
}
}
enqueue(object : GraphQLCall.Callback<T>() {
override fun onResponse(response: Response<T>) {
if (deferred.isActive) {
deferred.complete(response)
}
}
override fun onFailure(e: ApolloException) {
if (deferred.isActive) {
deferred.completeExceptionally(e)
}
}
})
return deferred.await()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment