Search in sources :

Example 1 with CacheKeyResolver

use of com.apollographql.apollo.cache.normalized.CacheKeyResolver in project apollo-android by apollographql.

the class GitHuntApplication method onCreate.

@Override
public void onCreate() {
    super.onCreate();
    OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
    ApolloSqlHelper apolloSqlHelper = new ApolloSqlHelper(this, SQL_CACHE_NAME);
    NormalizedCacheFactory normalizedCacheFactory = new LruNormalizedCacheFactory(EvictionPolicy.NO_EVICTION).chain(new SqlNormalizedCacheFactory(apolloSqlHelper));
    CacheKeyResolver cacheKeyResolver = new CacheKeyResolver() {

        @Nonnull
        @Override
        public CacheKey fromFieldRecordSet(@Nonnull ResponseField field, @Nonnull Map<String, Object> recordSet) {
            String typeName = (String) recordSet.get("__typename");
            if ("User".equals(typeName)) {
                String userKey = typeName + "." + recordSet.get("login");
                return CacheKey.from(userKey);
            }
            if (recordSet.containsKey("id")) {
                String typeNameAndIDKey = recordSet.get("__typename") + "." + recordSet.get("id");
                return CacheKey.from(typeNameAndIDKey);
            }
            return CacheKey.NO_KEY;
        }

        // Use this resolver to customize the key for fields with variables: eg entry(repoFullName: $repoFullName).
        // This is useful if you want to make query to be able to resolved, even if it has never been run before.
        @Nonnull
        @Override
        public CacheKey fromFieldArguments(@Nonnull ResponseField field, @Nonnull Operation.Variables variables) {
            return CacheKey.NO_KEY;
        }
    };
    apolloClient = ApolloClient.builder().serverUrl(BASE_URL).okHttpClient(okHttpClient).normalizedCache(normalizedCacheFactory, cacheKeyResolver).subscriptionTransportFactory(new WebSocketSubscriptionTransport.Factory(SUBSCRIPTION_BASE_URL, okHttpClient)).build();
}
Also used : SqlNormalizedCacheFactory(com.apollographql.apollo.cache.normalized.sql.SqlNormalizedCacheFactory) OkHttpClient(okhttp3.OkHttpClient) ApolloSqlHelper(com.apollographql.apollo.cache.normalized.sql.ApolloSqlHelper) Nonnull(javax.annotation.Nonnull) WebSocketSubscriptionTransport(com.apollographql.apollo.subscription.WebSocketSubscriptionTransport) ResponseField(com.apollographql.apollo.api.ResponseField) LruNormalizedCacheFactory(com.apollographql.apollo.cache.normalized.lru.LruNormalizedCacheFactory) SqlNormalizedCacheFactory(com.apollographql.apollo.cache.normalized.sql.SqlNormalizedCacheFactory) NormalizedCacheFactory(com.apollographql.apollo.cache.normalized.NormalizedCacheFactory) LruNormalizedCacheFactory(com.apollographql.apollo.cache.normalized.lru.LruNormalizedCacheFactory) CacheKeyResolver(com.apollographql.apollo.cache.normalized.CacheKeyResolver) Map(java.util.Map)

Aggregations

ResponseField (com.apollographql.apollo.api.ResponseField)1 CacheKeyResolver (com.apollographql.apollo.cache.normalized.CacheKeyResolver)1 NormalizedCacheFactory (com.apollographql.apollo.cache.normalized.NormalizedCacheFactory)1 LruNormalizedCacheFactory (com.apollographql.apollo.cache.normalized.lru.LruNormalizedCacheFactory)1 ApolloSqlHelper (com.apollographql.apollo.cache.normalized.sql.ApolloSqlHelper)1 SqlNormalizedCacheFactory (com.apollographql.apollo.cache.normalized.sql.SqlNormalizedCacheFactory)1 WebSocketSubscriptionTransport (com.apollographql.apollo.subscription.WebSocketSubscriptionTransport)1 Map (java.util.Map)1 Nonnull (javax.annotation.Nonnull)1 OkHttpClient (okhttp3.OkHttpClient)1