/*
     Get purchased items from local storage
  */
  public static ArrayList<StoreItem> readPurchasedItems(ArrayList<StoreItem> items, Context c) {
    SharedPreferences settings = c.getSharedPreferences(PREFS_NAME, 0);
    String storedItems = settings.getString(PURCHASED_ITEMS_KEYS, "");

    String[] pItems = TextUtils.split(storedItems, "");

    for (int i = 0, j = pItems.length; i < j; i++) {
      for (StoreItem item : items) {
        if (item.googleSKU != null && item.googleSKU.compareTo(pItems[i]) == 0) {
          item.isPurchased = true;
        }
      }
    }

    return items;
  }
        public void onQueryInventoryFinished(IabResult result, Inventory inventory) {

          mHelper.flagEndAsync();

          if (result.isFailure()) {
            updateListener.updateFailed();
            return;
          }

          for (StoreItem item : getAllStoreItems(c)) {
            if (item.googleSKU != null) {
              item.isPurchased = inventory.hasPurchase(item.googleSKU);
            }
          }

          writePurchasedItems(c);

          updateListener.updateSuccess();
        }
        public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
          StoreItem purchasedItem = null;
          int index = 0;

          mHelper.flagEndAsync();

          if (purchase == null) {
            Toast.makeText(
                    c,
                    "We can't find the requested item. Please try again soon!",
                    Toast.LENGTH_SHORT)
                .show();
            return;
          }

          for (StoreItem item : getAllStoreItems(c)) {
            if (item.googleSKU.compareTo(purchase.getSku()) == 0) {
              purchasedItem = item;
              break;
            }

            index++;
          }

          if (result.isFailure() || purchasedItem == null) {
            Log.d("FF PURCHASE", "Error purchasing: " + result);
            purchaseListener.purchaseFailed(purchasedItem, purchase);
            return;
          } else {
            purchasedItem.isPurchased = true;
            getAllStoreItems(c).get(index).isPurchased = true;
            purchaseListener.purchaseSuccess(purchasedItem, purchase);
          }

          writePurchasedItems(c);
        }
  public static ArrayList<StoreItem> getAllStoreItems(Context c, boolean updateFromLocal) {

    if (allStoreItems == null) {
      allStoreItems = new ArrayList<StoreItem>();

      StoreItem item = new StoreItem();
      item.id = ID_GAMES;
      item.title = "No Games";
      item.isPurchased = false;
      item.showOnStore = true;
      item.googleSKU = "no_games";

      allStoreItems.add(item);
    }

    if (updateFromLocal) {
      // update with purchased
      allStoreItems = readPurchasedItems(allStoreItems, c);
    }

    return allStoreItems;
  }