From 9ebef7eb0814ba62bf9283ee1548d9e34a57940c Mon Sep 17 00:00:00 2001 From: dkanada Date: Tue, 5 May 2020 17:21:04 +0900 Subject: [PATCH] remove billing processor and donation utilities --- app/build.gradle | 1 - .../gramophone/dialogs/DonationsDialog.java | 236 ------------------ .../ui/activities/AboutActivity.java | 6 +- app/src/main/res/layout/dialog_donation.xml | 49 ---- .../main/res/layout/item_donation_option.xml | 49 ---- app/src/main/res/values/donottranslate.xml | 9 - 6 files changed, 1 insertion(+), 349 deletions(-) delete mode 100644 app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java delete mode 100644 app/src/main/res/layout/dialog_donation.xml delete mode 100644 app/src/main/res/layout/item_donation_option.xml diff --git a/app/build.gradle b/app/build.gradle index 031b8e22..614d19af 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,7 +63,6 @@ dependencies { implementation 'com.github.ksoichiro:android-observablescrollview:1.6.0' implementation 'com.heinrichreimersoftware:material-intro:1.6' implementation 'com.h6ah4i.android.widget.advrecyclerview:advrecyclerview:0.11.0' - implementation 'com.anjlab.android.iab.v3:library:1.0.44' implementation 'com.jakewharton:butterknife:10.1.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0' diff --git a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java b/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java deleted file mode 100644 index 4c88e0e0..00000000 --- a/app/src/main/java/com/kabouzeid/gramophone/dialogs/DonationsDialog.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.kabouzeid.gramophone.dialogs; - -import android.annotation.SuppressLint; -import android.app.Dialog; -import android.content.Intent; -import android.graphics.Paint; -import android.os.AsyncTask; -import android.os.Bundle; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ListView; -import android.widget.ProgressBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.afollestad.materialdialogs.MaterialDialog; -import com.afollestad.materialdialogs.internal.MDTintHelper; -import com.afollestad.materialdialogs.internal.ThemeSingleton; -import com.anjlab.android.iab.v3.BillingProcessor; -import com.anjlab.android.iab.v3.SkuDetails; -import com.anjlab.android.iab.v3.TransactionDetails; -import com.kabouzeid.appthemehelper.ThemeStore; -import com.kabouzeid.appthemehelper.util.ATHUtil; -import com.kabouzeid.gramophone.App; -import com.kabouzeid.gramophone.R; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class DonationsDialog extends DialogFragment implements BillingProcessor.IBillingHandler { - public static final String TAG = DonationsDialog.class.getSimpleName(); - - private static final int DONATION_PRODUCT_IDS = R.array.donation_ids; - - private BillingProcessor billingProcessor; - - private AsyncTask skuDetailsLoadAsyncTask; - - public static DonationsDialog create() { - return new DonationsDialog(); - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - @SuppressLint("InflateParams") - View customView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_donation, null); - ProgressBar progressBar = customView.findViewById(R.id.progress); - MDTintHelper.setTint(progressBar, ThemeSingleton.get().positiveColor.getDefaultColor()); - - return new MaterialDialog.Builder(getContext()) - .title(R.string.support_development) - .customView(customView, false) - .build(); - } - - private void donate(int i) { - final String[] ids = getResources().getStringArray(DONATION_PRODUCT_IDS); - billingProcessor.purchase(getActivity(), ids[i]); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)) { - super.onActivityResult(requestCode, resultCode, data); - } - } - - @Override - public void onProductPurchased(@NonNull String productId, TransactionDetails details) { - loadSkuDetails(); - Toast.makeText(getContext(), R.string.thank_you, Toast.LENGTH_SHORT).show(); - } - - @Override - public void onPurchaseHistoryRestored() { - loadSkuDetails(); - } - - @Override - public void onBillingError(int errorCode, Throwable error) { - Log.e(TAG, "Billing error: code = " + errorCode, error); - } - - @Override - public void onBillingInitialized() { - loadSkuDetails(); - } - - @Override - public void onDestroy() { - if (billingProcessor != null) { - billingProcessor.release(); - } - if (skuDetailsLoadAsyncTask != null) { - skuDetailsLoadAsyncTask.cancel(true); - } - - super.onDestroy(); - } - - private void loadSkuDetails() { - if (skuDetailsLoadAsyncTask != null) { - skuDetailsLoadAsyncTask.cancel(false); - } - - skuDetailsLoadAsyncTask = new SkuDetailsLoadAsyncTask(this).execute(); - } - - private static class SkuDetailsLoadAsyncTask extends AsyncTask> { - private final WeakReference donationDialogWeakReference; - - public SkuDetailsLoadAsyncTask(DonationsDialog donationsDialog) { - this.donationDialogWeakReference = new WeakReference<>(donationsDialog); - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - DonationsDialog dialog = donationDialogWeakReference.get(); - if (dialog == null) return; - - View customView = ((MaterialDialog) dialog.getDialog()).getCustomView(); - //noinspection ConstantConditions - customView.findViewById(R.id.progress_container).setVisibility(View.VISIBLE); - customView.findViewById(R.id.list).setVisibility(View.GONE); - } - - @Override - protected List doInBackground(Void... params) { - DonationsDialog dialog = donationDialogWeakReference.get(); - if (dialog != null) { - final String[] ids = dialog.getResources().getStringArray(DONATION_PRODUCT_IDS); - return dialog.billingProcessor.getPurchaseListingDetails(new ArrayList<>(Arrays.asList(ids))); - } - - cancel(false); - return null; - } - - @Override - protected void onPostExecute(List skuDetails) { - super.onPostExecute(skuDetails); - DonationsDialog dialog = donationDialogWeakReference.get(); - if (dialog == null) return; - - if (skuDetails == null || skuDetails.isEmpty()) { - dialog.dismiss(); - return; - } - - View customView = ((MaterialDialog) dialog.getDialog()).getCustomView(); - //noinspection ConstantConditions - customView.findViewById(R.id.progress_container).setVisibility(View.GONE); - ListView listView = customView.findViewById(R.id.list); - listView.setAdapter(new SkuDetailsAdapter(dialog, skuDetails)); - listView.setVisibility(View.VISIBLE); - } - } - - static class SkuDetailsAdapter extends ArrayAdapter { - @LayoutRes - private static int LAYOUT_RES_ID = R.layout.item_donation_option; - - DonationsDialog donationsDialog; - - public SkuDetailsAdapter(@NonNull DonationsDialog donationsDialog, @NonNull List objects) { - super(donationsDialog.getContext(), LAYOUT_RES_ID, objects); - this.donationsDialog = donationsDialog; - } - - @Override - @NonNull - public View getView(final int position, View convertView, @NonNull ViewGroup parent) { - if (convertView == null) { - convertView = LayoutInflater.from(getContext()).inflate(LAYOUT_RES_ID, parent, false); - } - - SkuDetails skuDetails = getItem(position); - ViewHolder viewHolder = new ViewHolder(convertView); - - viewHolder.title.setText(skuDetails.title.replace("(Phonograph Music Player)", "").trim()); - viewHolder.text.setText(skuDetails.description); - viewHolder.price.setText(skuDetails.priceText); - - final boolean purchased = donationsDialog.billingProcessor.isPurchased(skuDetails.productId); - int titleTextColor = purchased ? ATHUtil.resolveColor(getContext(), android.R.attr.textColorHint) : ThemeStore.textColorPrimary(getContext()); - int contentTextColor = purchased ? titleTextColor : ThemeStore.textColorSecondary(getContext()); - - //noinspection ResourceAsColor - viewHolder.title.setTextColor(titleTextColor); - //noinspection ResourceAsColor - viewHolder.text.setTextColor(contentTextColor); - //noinspection ResourceAsColor - viewHolder.price.setTextColor(titleTextColor); - - strikeThrough(viewHolder.title, purchased); - strikeThrough(viewHolder.text, purchased); - strikeThrough(viewHolder.price, purchased); - - convertView.setOnTouchListener((v, event) -> purchased); - - convertView.setOnClickListener(v -> donationsDialog.donate(position)); - - return convertView; - } - - private static void strikeThrough(TextView textView, boolean strikeThrough) { - textView.setPaintFlags(strikeThrough ? textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG : textView.getPaintFlags() & ~Paint.STRIKE_THRU_TEXT_FLAG); - } - - static class ViewHolder { - @BindView(R.id.title) - TextView title; - @BindView(R.id.text) - TextView text; - @BindView(R.id.price) - TextView price; - - public ViewHolder(View view) { - ButterKnife.bind(this, view); - } - } - } -} diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java index c4a58bac..92718cf4 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/activities/AboutActivity.java @@ -15,15 +15,11 @@ import android.widget.TextView; import com.kabouzeid.appthemehelper.ThemeStore; import com.kabouzeid.gramophone.R; -import com.kabouzeid.gramophone.dialogs.DonationsDialog; import com.kabouzeid.gramophone.ui.activities.base.AbsBaseActivity; import butterknife.BindView; import butterknife.ButterKnife; -/** - * @author Karim Abou Zeid (kabouzeid) - */ @SuppressWarnings("FieldCanBeLocal") public class AboutActivity extends AbsBaseActivity implements View.OnClickListener { @@ -182,7 +178,7 @@ public class AboutActivity extends AbsBaseActivity implements View.OnClickListen } else if (v == rateOnGooglePlay) { openUrl(RATE_ON_GOOGLE_PLAY); } else if (v == donate) { - DonationsDialog.create().show(getSupportFragmentManager(), "DONATION_DIALOG"); + openUrl(RATE_ON_GOOGLE_PLAY); } else if (v == aidanFollestadGooglePlus) { openUrl(AIDAN_FOLLESTAD_GOOGLE_PLUS); } else if (v == aidanFollestadGitHub) { diff --git a/app/src/main/res/layout/dialog_donation.xml b/app/src/main/res/layout/dialog_donation.xml deleted file mode 100644 index 992e9293..00000000 --- a/app/src/main/res/layout/dialog_donation.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_donation_option.xml b/app/src/main/res/layout/item_donation_option.xml deleted file mode 100644 index ae5004d1..00000000 --- a/app/src/main/res/layout/item_donation_option.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index 10cd1a38..fa45254d 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -18,13 +18,4 @@ \? - - donation_1 - donation_2 - donation_3 - donation_4 - donation_5 - donation_6 - -