Added UPI payment link for indian support

This commit is contained in:
h4h13 2020-02-26 00:47:03 +05:30
parent d1ecdab42b
commit 954dfb6327
7 changed files with 198 additions and 19 deletions

View file

@ -18,24 +18,22 @@ import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import code.name.monkey.appthemehelper.ThemeStore
import code.name.monkey.appthemehelper.util.ATHUtil
import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.appthemehelper.util.TintHelper
import code.name.monkey.appthemehelper.util.ToolbarContentTintHelper
import code.name.monkey.retromusic.BuildConfig
import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsBaseActivity
import code.name.monkey.retromusic.dialogs.UpiPaymentBottomSheetDialogFragment
import code.name.monkey.retromusic.extensions.textColorPrimary
import code.name.monkey.retromusic.extensions.textColorSecondary
import com.anjlab.android.iab.v3.BillingProcessor
import com.anjlab.android.iab.v3.SkuDetails
import com.anjlab.android.iab.v3.TransactionDetails
import kotlinx.android.synthetic.main.activity_about.toolbar
import kotlinx.android.synthetic.main.activity_donation.donation
import kotlinx.android.synthetic.main.activity_donation.progress
import kotlinx.android.synthetic.main.activity_donation.progressContainer
import kotlinx.android.synthetic.main.activity_donation.recyclerView
import kotlinx.android.synthetic.main.activity_donation.*
import java.lang.ref.WeakReference
import java.util.ArrayList
import java.util.Arrays
import java.util.*
class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingHandler {
@ -58,7 +56,7 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH
fun donate(i: Int) {
val ids = resources.getStringArray(DONATION_PRODUCT_IDS)
billingProcessor!!.purchase(this, ids[i])
billingProcessor?.purchase(this, ids[i])
}
override fun onCreate(savedInstanceState: Bundle?) {
@ -75,6 +73,14 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH
billingProcessor = BillingProcessor(this, BuildConfig.GOOGLE_PLAY_LICENSING_KEY, this)
TintHelper.setTint(progress, ThemeStore.accentColor(this))
donation.setTextColor(ThemeStore.accentColor(this))
MaterialUtil.setTint(upiClick)
upiClick.setOnClickListener {
UpiPaymentBottomSheetDialogFragment().show(
supportFragmentManager,
UpiPaymentBottomSheetDialogFragment.TAG
)
}
}
private fun setupToolbar() {
@ -120,12 +126,8 @@ class SupportDevelopmentActivity : AbsBaseActivity(), BillingProcessor.IBillingH
}
override fun onDestroy() {
if (billingProcessor != null) {
billingProcessor!!.release()
}
if (skuDetailsLoadAsyncTask != null) {
skuDetailsLoadAsyncTask!!.cancel(true)
}
billingProcessor?.release()
skuDetailsLoadAsyncTask?.cancel(true)
super.onDestroy()
}
}
@ -148,7 +150,8 @@ private class SkuDetailsLoadAsyncTask internal constructor(supportDevelopmentAct
override fun doInBackground(vararg params: Void): List<SkuDetails>? {
val dialog = weakReference.get()
if (dialog != null) {
val ids = dialog.resources.getStringArray(SupportDevelopmentActivity.DONATION_PRODUCT_IDS)
val ids =
dialog.resources.getStringArray(SupportDevelopmentActivity.DONATION_PRODUCT_IDS)
return dialog.billingProcessor!!.getPurchaseListingDetails(ArrayList(Arrays.asList(*ids)))
}
cancel(false)
@ -220,7 +223,8 @@ class SkuDetailsAdapter(
donationsDialog,
android.R.attr.textColorHint
) else textColorPrimary(donationsDialog)
val contentTextColor = if (purchased) titleTextColor else textColorSecondary(donationsDialog)
val contentTextColor =
if (purchased) titleTextColor else textColorSecondary(donationsDialog)
viewHolder.title.setTextColor(titleTextColor)
viewHolder.text.setTextColor(contentTextColor)
@ -250,8 +254,9 @@ class SkuDetailsAdapter(
private val LAYOUT_RES_ID = R.layout.item_donation_option
private fun strikeThrough(textView: TextView, strikeThrough: Boolean) {
textView.paintFlags = if (strikeThrough) textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
else textView.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
textView.paintFlags =
if (strikeThrough) textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
else textView.paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
}
}
}

View file

@ -0,0 +1,64 @@
package code.name.monkey.retromusic.dialogs
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import code.name.monkey.appthemehelper.util.MaterialUtil
import code.name.monkey.retromusic.R
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.android.synthetic.main.fragment_upi_payment_dialog.*
class UpiPaymentBottomSheetDialogFragment : BottomSheetDialogFragment() {
companion object {
const val TAG: String = "UpiPaymentBottomSheetDialogFragment"
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_upi_payment_dialog, container, false)
}
private fun upi(name: String, amount: String, note: String) {
val currentTime = System.currentTimeMillis() / 1000
val transactionId = "${currentTime}UPI"
val upi =
"upi://pay?pa=retromusic@ybl&pn=$name&mc=0000&tid=$transactionId&tr=$transactionId&tn=$note&am=$amount&cu=INR&refUrl=refurl".replace(
" ",
"+"
)
val intent = Intent();
intent.action = Intent.ACTION_VIEW;
intent.data = Uri.parse(upi);
val chooser = Intent.createChooser(intent, "Pay with...");
startActivityForResult(chooser, 1, null)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
MaterialUtil.setTint(submit)
submit.setOnClickListener {
val name = nameText.text.toString()
if (TextUtils.isEmpty(name)) {
nameContainer.error = "Name is empty"
return@setOnClickListener
} else {
nameContainer.error = null
}
val amount = amountText.text.toString()
if (TextUtils.isEmpty(amount)) {
amountContainer.error = "Amount is empty"
return@setOnClickListener
} else {
amountContainer.error = null
}
upi(name, amount, noteText.text.toString())
}
}
}