public CachingRequestListener(@Nonnull Request<R> request, @Nonnull RequestListener<R> listener) { super(listener); Check.isTrue(mCache.hasCache(), "Cache must exist"); mRequest = request; }
@Nonnull PurchaseFlow createPurchaseFlow(@Nonnull IntentStarter intentStarter, int requestCode, @Nonnull RequestListener<Purchase> listener) { if (mCache.hasCache()) { listener = new RequestListenerWrapper<Purchase>(listener) { @Override public void onSuccess(@Nonnull Purchase result) { mCache.removeAll(RequestType.GET_PURCHASES.getCacheKeyType()); super.onSuccess(result); } }; } return new PurchaseFlow(intentStarter, requestCode, listener, mConfiguration.getPurchaseVerifier()); }
<R> int runWhenConnected(@Nonnull Request<R> request, @Nullable RequestListener<R> listener, @Nullable Object tag) { if (listener != null) { if (mCache.hasCache()) { listener = new CachingRequestListener<>(request, listener); } request.setListener(listener); } if (tag != null) { request.setTag(tag); } mPendingRequests.add(onConnectedService(request)); connect(); return request.getId(); }
private boolean checkCache(@Nonnull Request request) { if (!mCache.hasCache()) { return false; } final String key = request.getCacheKey(); if (key == null) { return false; } final Cache.Entry entry = mCache.get(request.getType().getCacheKey(key)); if (entry == null) { return false; } request.onSuccess(entry.data); return true; }