public boolean onMaybeDone(@Nonnull Products products) { synchronized (mLock) { mProducts.merge(products); if (!existsUnsupported()) { onDone(); return true; } return false; } }
private void loadSkus(@Nonnull BillingRequests requests, @Nonnull final Product product) { final List<String> skuIds = mTask.getRequest().getSkus(product.id); if (skuIds.isEmpty()) { Billing.warning("There are no SKUs for \"" + product.id + "\" product. No SKU information will be loaded"); synchronized (mLock) { countDown(); } return; } requests.getSkus(product.id, skuIds, synchronizedListener(new RequestListener<Skus>() { @Override public void onSuccess(@Nonnull Skus skus) { product.setSkus(skus.list); countDown(); } @Override public void onError(int response, @Nonnull Exception e) { countDown(); } })); } }
@Override public void onReady(@Nonnull BillingRequests requests, @Nonnull String productId, boolean billingSupported) { final Product product = new Product(productId, billingSupported); synchronized (mLock) { countDown(); mProducts.add(product); if (!mTask.isCancelled() && product.supported && mTask.getRequest().shouldLoadPurchases(productId)) { loadPurchases(requests, product); } else { countDown(1); } if (!mTask.isCancelled() && product.supported && mTask.getRequest().shouldLoadSkus(productId)) { loadSkus(requests, product); } else { countDown(1); } } }
@Override public void onLoaded(@Nonnull Products products) { mTask.onDone(products); }
public void load() { mFallbackInventory.load(mTask.getRequest(), this); } }
public void load() { mMainInventory.load(mTask.getRequest(), this); } }
@Override public void run() { mTask.onDone(products); } });
@Override public void run() { final Context context = mCheckout.getContext(); final RobotmediaDatabase database = new RobotmediaDatabase(context); final Products products = database.load(mTask.getRequest()); onLoaded(products); } }
private void countDown(int count) { Check.isTrue(Thread.holdsLock(mLock), "Must be synchronized"); mCount -= count; Check.isTrue(mCount >= 0, "Can't be negative"); if (mCount == 0) { mTask.onDone(mProducts); } }
public void onDone(@Nonnull Products products) { synchronized (mLock) { mProducts.merge(products); onDone(); } }
@Override public void onLoaded(@Nonnull Products products) { if (mTask.onMaybeDone(products)) { return; } mFallbackCallback.load(); }