package com.github.jberkel.pay.me; import android.os.AsyncTask; import com.github.jberkel.pay.me.listener.QueryInventoryFinishedListener; import com.github.jberkel.pay.me.model.Inventory; import java.util.List; import static com.github.jberkel.pay.me.Response.OK; class QueryInventoryTask extends AsyncTask<QueryInventoryTask.Args, Void, Inventory> { private final IabHelper mIabHelper; private final QueryInventoryFinishedListener mListener; private IabResult mResult = new IabResult(OK); public QueryInventoryTask(IabHelper iabHelper, QueryInventoryFinishedListener listener) { mIabHelper = iabHelper; mListener = listener; } @Override protected void onPreExecute() { mIabHelper.flagStartAsync("refresh inventory"); } @Override protected Inventory doInBackground(Args... args) { if (args == null || args.length == 0 || args[0] == null) throw new IllegalArgumentException("need args"); final Args arg = args[0]; try { return mIabHelper.queryInventory(arg.queryDetails, arg.skus, arg.subSkus); } catch (IabException ex) { mResult = ex.getResult(); return null; } } @Override protected void onPostExecute(Inventory inventory) { mIabHelper.flagEndAsync(); if (mListener != null && !mIabHelper.isDisposed() && !isCancelled()) { mListener.onQueryInventoryFinished(mResult, inventory); } } static class Args { final boolean queryDetails; final List<String> skus; final List<String> subSkus; public Args(boolean querySkuDetails, List<String> moreSkus, List<String> moreSubSkus) { queryDetails = querySkuDetails; skus = moreSkus; subSkus = moreSubSkus; } } }