Mutiny
Apollo Android includes support for Mutiny.
Apollo types can be converted to Mutiny Uni
types using wrapper functions MutinyApollo.from(...)
in Java or using extension functions in Kotlin.
Conversion is done according to the following table:
Apollo type | Mutiny type |
---|---|
ApolloCall<T> | Uni<Response<T>> |
ApolloSubscriptionCall<T> | Multi<Response<T>> |
ApolloQueryWatcher<T> | Uni<Response<T>> |
ApolloStoreOperation<T> | Uni<T> |
ApolloPrefetch | Uni<Void> |
Prerequisites
See Mutiny documentation
Including in your project
Add the following dependency
:
// Mutiny supportimplementation 'com.apollographql.apollo:apollo-mutiny-support:x.y.z'
Usage examples
Converting ApolloCall
to an Uni
Java:
// Create a query objectEpisodeHeroName query = EpisodeHeroName.builder().episode(Episode.EMPIRE).build();// Create an ApolloCall objectApolloCall<EpisodeHeroName.Data> apolloCall = apolloClient.query(query);// Mutiny UniUni<Response<EpisodeHeroName.Data>> uni = MutinyApollo.from(apolloCall);
Kotlin:
// Create a query objectval query = EpisodeHeroNameQuery(episode = Episode.EMPIRE.toInput())// Directly create Uni with Kotlin extensionval uni = apolloClient.mutinyQuery(query)
Converting ApolloPrefetch
to a Uni<Void>
Java:
//Create a query objectEpisodeHeroName query = EpisodeHeroName.builder().episode(Episode.EMPIRE).build();//Create an ApolloPrefetch objectApolloPrefetch<EpisodeHeroName.Data> apolloPrefetch = apolloClient.prefetch(query);//Mutiny Uni<Void>Uni<Void> uni = MutinyApollo.from(apolloPrefetch);
Kotlin:
// Create a query objectval query = EpisodeHeroNameQuery(episode = Episode.EMPIRE.toInput())// Create Uni for prefetch with Kotlin extensionval uni = apolloClient.mutinyPrefetch(query)
Also, don't forget to cancel of your Observer/Subscriber when you are finished:
Cancellable cancellable = ReactorApollo.from(query).subscribe().with(item -> log("👍 " + item))//Cancel of your Observer when you are done with your workcancellable.cancel();