package com.github.jberkel.pay.me;
import android.os.AsyncTask;
import com.github.jberkel.pay.me.listener.OnConsumeFinishedListener;
import com.github.jberkel.pay.me.listener.OnConsumeMultiFinishedListener;
import com.github.jberkel.pay.me.model.Purchase;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static com.github.jberkel.pay.me.Response.OK;
class ConsumeTask extends AsyncTask<Purchase, Void, List<IabResult>> {
private final IabHelper mIabHelper;
private final OnConsumeFinishedListener mSingleListener;
private final OnConsumeMultiFinishedListener mMultiListener;
private List<Purchase> mPurchases;
public ConsumeTask(IabHelper iabHelper,
OnConsumeFinishedListener singleListener,
OnConsumeMultiFinishedListener multiListener) {
mIabHelper = iabHelper;
mSingleListener = singleListener;
mMultiListener = multiListener;
}
@Override
protected void onPreExecute() {
mIabHelper.flagStartAsync("consume");
}
@Override
protected List<IabResult> doInBackground(final Purchase... purchases) {
if (purchases == null || purchases.length == 0) throw new IllegalArgumentException("no purchases");
mPurchases = new ArrayList<Purchase>(purchases.length);
Collections.addAll(mPurchases, purchases);
final List<IabResult> results = new ArrayList<IabResult>(purchases.length);
for (Purchase purchase : purchases) {
try {
mIabHelper.consume(purchase);
results.add(new IabResult(OK, "Successful consume of sku " + purchase.getSku()));
} catch (IabException ex) {
results.add(ex.getResult());
}
}
return results;
}
@Override
protected void onPostExecute(List<IabResult> results) {
mIabHelper.flagEndAsync();
if (mIabHelper.isDisposed() || isCancelled()) return;
if (mSingleListener != null) {
mSingleListener.onConsumeFinished(mPurchases.get(0), results.get(0));
}
if (mMultiListener != null) {
mMultiListener.onConsumeMultiFinished(mPurchases, results);
}
}
}